golang exec.Command无法运行C二进制文件

时间:2014-12-10 08:25:46

标签: c linux go executable status

我使用exec.Command和exec.Start()执行C可执行文件。我的C可执行文件位于当前目录中,这是我的代码

cmd := exec.Command("./a.out")
// stdout,err := cmd.StderrPipe()
stderr,_ := cmd.StderrPipe()

err := cmd.Start()
if err != nil {
    log.Fatal(err)
}

log.Printf("Waiting for command to finish...")
s,err := ioutil.ReadAll(stderr)
log.Printf(string(s))
err = cmd.Wait()
log.Printf("Command finished with error: %v", err)

当我运行此代码时,这是我得到的输出

2014/12/10 07:49:39 Waiting for command to finish...
2014/12/10 07:49:39 Command finished with error: exit status 11

我的C hello世界计划

#include <stdio.h>
int main(){
printf("hello world");
}

C代码使用gcc版本4.8.2编译,可执行文件是a.out。

C可执行文件a.out是一个简单的hello world程序,我得到了正确的输出,但是我无法理解为什么exec.Wait()退出时状态码为11而不是0。

当我在Linux终端上运行时没有任何错误或错误,可执行文件(&#39; a.out&#39;)正常运行

1 个答案:

答案 0 :(得分:2)

我从github here

得到了答案

它返回11因为输出长度是11并且我的hello world程序中没有return语句。因此AX寄存器在结束时会返回主要内容。