gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:05:40 26 4
gpt4 key购买 nike

我使用 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')正常运行,没有任何故障或错误

最佳答案

我从github上得到了答案here

它返回 11,因为输出长度是 11,而我的 hello world 程序中没有 return 语句。所以 main 在结束时从 AX 寄存器返回。

关于c - golang exec.Command 无法运行 C 二进制文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27396282/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com