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 " "
通常、stderr はエラーを示しますが、一部のコマンドはエラー コードを返さずに stdout または stderr にエラーを出力することに注意することが重要です。したがって、特定のコマンドに対応できるようにコードを調整する必要がある場合があります。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3