首頁 > 後端開發 > Golang > 如何從 Go 中的 os/exec 檢索退出程式碼?

如何從 Go 中的 os/exec 檢索退出程式碼?

Barbara Streisand
發布: 2024-12-23 10:37:58
原創
450 人瀏覽過

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

如何在 Go 中取得退出碼

使用 os/exec 套件執行指令時,可能會遇到取得退出程式碼的常見問題。雖然文件提供了 Process.Success() 方法來指示進程是否正常退出,但它沒有提供檢索實際退出程式碼的明確方法。

取得 Linux 退出程式碼的解決方法-基於系統的方法是利用 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 類型,其中包含ExitStatus() 方法來擷取在Linux 和其他類UNIX 作業系統上執行的程序的退出程式碼.

對於Windows 系統,此方法不起作用,因為它不提供相同的退出程式碼概念。相反,您可以選擇其他方法,例如使用 cmd.exe 的 /c 選項來執行命令並解析輸出中的錯誤代碼。

透過根據您的作業系統調整這些技術,您可以有效地檢索透過 Go 中的 os/exec 套件執行的外部命令的退出代碼。

以上是如何從 Go 中的 os/exec 檢索退出程式碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板