Golang の「exec.Command」が「終了ステータス 1」を返すのはなぜですか?

Susan Sarandon
リリース: 2024-11-24 04:45:19
オリジナル
179 人が閲覧しました

Why Does My Golang `exec.Command` Return

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート