我使用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 World程序是:
#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终端上运行这个可执行文件('a.out')时没有出现任何故障或错误。