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

如何可靠地從 Go 的 os/exec 套件中檢索退出程式碼?

Barbara Streisand
發布: 2024-12-31 01:37:08
原創
812 人瀏覽過

How Can I Reliably Retrieve Exit Codes from Go's os/exec Package?

確定Go 的os/exec 套件中的退出代碼

在Go 中,os/exec 套件提供了執行系統指令的便捷機制。然而,獲取已執行命令的退出代碼可能有點棘手。

問題

Command.Run() 和 Command.Output() 方法確實不提供對退出程式碼的直接存取。雖然 Command.Wait() 將傳回非零退出代碼的錯誤,但此錯誤不包括特定的退出代碼值。

跨平台解決方案

不幸的是,沒有用於檢索退出程式碼的與平台無關的 API。但是,對於 Linux 系統,可以使用以下方法:

import (
    "syscall"
)

...

// Attempt to execute the command
if err := cmd.Start(); err != nil {
    log.Fatalf("cmd.Start: %v", err)
}

// Wait for the command to complete
if err := cmd.Wait(); err != nil {
    if exitErr, ok := err.(*exec.ExitError); ok {
        // Convert exit status to an integer
        exitStatus := exitErr.ExitCode()
        log.Printf("Exit Status: %d", exitStatus)
    } else {
        log.Fatalf("cmd.Wait: %v", err)
    }
}
登入後複製

在此解決方案中,我們依賴 os/exec 套件中提供的非標準 ExitError 結構。透過檢查它是否存在,我們可以存取 ExitCode() 方法來檢索退出程式碼。

限制

請注意,此方法特定於 Linux,可能會不適用於其他平台。請參閱 os/exec 套件文件以取得替代方法或查閱特定於平台的資源。

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

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