在 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中文网其他相关文章!