在Go 中取得退出代碼
使用os/exec 套件在作業系統上執行指令提供了一種與外部互動的便捷方式流程。然而,獲取已執行命令的退出代碼一開始可能是一個挑戰。
要解決此問題,一種方法是監視 cmd.Wait() 函數是否回傳 nil,這表示退出程式碼為0. 但是,在發生錯誤時存取特定的退出程式碼可能會更加複雜。
平台特定的退出代碼檢索
不幸的是,沒有跨平台機制來檢索錯誤情況的退出代碼。以下解決方法專門針對 Linux 系統:
import ( "os/exec" "log" "syscall" ) func main() { cmd := exec.Command("git", "blub") if err := cmd.Start(); err != nil { log.Fatalf("cmd.Start: %v", err) } if err := cmd.Wait(); err != nil { if exiterr, ok := err.(*exec.ExitError); ok { log.Printf("Exit Status: %d", exiterr.ExitCode()) } else { log.Fatalf("cmd.Wait: %v", err) } } }
此方法利用 syscall 套件將錯誤轉換為 *exec.ExitError 類型,從而允許存取退出程式碼。
文件探索
參考os/exec包的API文件可以提供進一步的幫助對這個主題的見解。
以上是如何檢索 Go 中執行指令的退出代碼?的詳細內容。更多資訊請關注PHP中文網其他相關文章!