ホームページ > バックエンド開発 > Golang > Go で `os/exec` から終了コードを取得する方法は?

Go で `os/exec` から終了コードを取得する方法は?

Barbara Streisand
リリース: 2024-12-23 10:37:58
オリジナル
484 人が閲覧しました

How to Retrieve the Exit Code from `os/exec` in Go?

Go で終了コードを取得する方法

os/exec パッケージを使用してコマンドを実行する場合、終了コードの取得に関する一般的な問題に遭遇することがあります。ドキュメントには、プロセスがエラーなしで終了したかどうかを示す Process.Success() メソッドが提供されていますが、実際の終了コードを取得する明示的な方法は提供されていません。

Linux の終了コードを取得する 1 つの回避策-ベースのシステムでは、syscall パッケージを利用します。改善されたコード スニペットは次のとおりです。

package main

import (
    "log"
    "os/exec"
    "syscall"
)

func main() {
    cmd := exec.Command("somecommand", "parameter")
    if err := cmd.Run(); err != nil {
        if exiterr, ok := err.(*exec.ExitError); ok {
            // exiterr.Sys() is a syscall.WaitStatus.
            log.Printf("Exit Status: %d", exiterr.Sys().(syscall.WaitStatus).ExitStatus())
        } else {
            log.Fatalf("cmd.Run: %v", err)
        }
    }
}
ログイン後にコピー

このアプローチでは、syscall パッケージの WaitStatus タイプを使用します。これには、Linux およびその他の UNIX 系オペレーティング システムで実行されているプロセスの終了コードを取得する ExitStatus() メソッドが含まれています。 .

Windows システムの場合、このメソッドは終了コードの同じ概念を提供していないため機能しません。代わりに、cmd.exe の /c オプションを使用してコマンドを実行し、出力でエラー コードを解析するなどの代替アプローチを選択できます。

オペレーティング システムに基づいてこれらの手法を適応させることで、効果的にGo の os/exec パッケージを通じて実行される外部コマンドの終了コード。

以上がGo で `os/exec` から終了コードを取得する方法は?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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