首页 >后端开发 >Golang >如何检索 Go 中执行命令的退出代码?

如何检索 Go 中执行命令的退出代码?

Patricia Arquette
Patricia Arquette原创
2024-12-16 19:18:13551浏览

How to Retrieve the Exit Code of an Executed Command in Go?

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

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn