ホームページ >バックエンド開発 >Golang >Golang の exec.Command の「終了ステータス 1」エラーをデバッグするにはどうすればよいですか?

Golang の exec.Command の「終了ステータス 1」エラーをデバッグするにはどうすればよいですか?

Linda Hamilton
Linda Hamiltonオリジナル
2024-12-04 06:40:15710ブラウズ

How to Debug

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。