Golang の exec.Command で「終了ステータス 1」エラーが発生する原因を特定する方法
Golang で exec.Command メソッドを実行する場合、「終了ステータス 1」エラーを受け取ると、イライラするほど曖昧になることがあります。特定の情報が存在しないと、効果的なデバッグが妨げられます。
より詳細な情報を取得するには、Command オブジェクトの Stderr プロパティを利用します。これは次の方法で実現されます。
var out bytes.Buffer var stderr bytes.Buffer cmd.Stdout = &out cmd.Stderr = &stderr err := cmd.Run()
エラーを stderr バッファにリダイレクトすることで、コマンドが失敗した場合でもエラーにアクセスできます。
if err != nil { fmt.Println(fmt.Sprint(err) + ": " + stderr.String()) return }
場合によっては、出力は次のようになります。 stdout と stderr の両方に表示されます。以下の例のように、コマンドがゼロ以外のエラー コードを返した場合:
cmd := exec.Command("find", "/", "-maxdepth", "1", "-exec", "wc", "-c", "{}", "\")
エラー メッセージは次のようになります:
exit status 1: find: -exec: no terminating ";" or "+"
標準エラー出力は通常、エラーがある場合、一部のコマンドはエラー コードを返さずに stdout または stderr にエラーを出力します。したがって、特定のコマンドに対応できるようにコードを調整する必要がある場合があります。
以上がGolang の「exec.Command」が「終了ステータス 1」を返すのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。