我使用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;)正常运行
答案 0 :(得分:2)
我从github here
得到了答案它返回11因为输出长度是11并且我的hello world程序中没有return语句。因此AX寄存器在结束时会返回主要内容。