Golang の exec.Command のデバッグエラー
Golang で exec.Command を実行すると、「終了ステータス 1」が発生します詳細な情報がないと、エラーが発生してイライラする可能性があります。幸いなことに、根本的な原因を明らかにする解決策があります。
解決策:
Command オブジェクトの Stderr プロパティを利用します。このプロパティは、コマンドによって生成された標準エラー出力をキャプチャします。コード スニペットの修正版は次のとおりです。
import ( "bytes" "fmt" "os/exec" ) func main() { cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\") var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run() if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return } fmt.Println("Result: " + out.String()) }
説明:
Stderr プロパティをバッファ (stderr) に割り当てることで、コマンドがキャプチャされてバッファに追加されます。コマンドがゼロ以外の終了コードで終了すると、エラーと標準エラー出力が出力され、デバッグのための詳細なコンテキストが提供されます。
注:
一部のコマンドは、エラーを標準エラー出力ではなく標準出力に出力するか、標準エラー出力のメッセージとともにエラー コード 0 を返します。したがって、このソリューションを適応させるときは、各コマンドの動作を考慮する必要があります。
以上がGolang の exec.Command の「終了ステータス 1」エラーをデバッグするにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。