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

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

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

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

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

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

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

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

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

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