如何从exec命令获取错误消息

Mad*_*ala 3 operating-system cmd exec go

我正在使用Go来创建CLI.我正在执行一个命令,如果从操作系统中抛出错误,我想打印它.

cmd := exec.Command("abc", "run", pathToFile)
err := cmd.Start()
if err != nil {
    fmt.Printf("Error : %v \n", err)
    os.Exit(1)
}
err = cmd.Wait()
if err != nil {
    fmt.Printf("Error: %v \n", err)
    os.Exit(1)
}
Run Code Online (Sandbox Code Playgroud)

这只给我退出状态代码

Error:  exit status 1 
Run Code Online (Sandbox Code Playgroud)

这不够描述.

当我直接在终端中运行命令时,我会清楚地收到错误消息.

source does not exist 'test.exe'
Run Code Online (Sandbox Code Playgroud)

有没有办法打印邮件?

Kib*_*Gzr 6

StderrPipe 返回一个管道,该命令将在命令启动时连接到命令的标准错误.

cmd := exec.Command("abc", "run", pathToFile)
stderr, _ := cmd.StderrPipe()
if err := cmd.Start(); err != nil {
    log.Fatal(err)
}

scanner := bufio.NewScanner(stderr)
for scanner.Scan() {
    fmt.Println(scanner.Text())
}
Run Code Online (Sandbox Code Playgroud)