gpt4 book ai didi

c - 为什么是$?调用 system() 后总是 0?

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

我正在 Linux 下测试这个小程序:

// foo.c
#include <stdio.h>
#include <stdlib.h>

int main(int argc, char* argv[])
{
int n = system(argv[1]);
printf("%d\n", n);
return n;
}

无论输入命令行的是什么,echo $? 总是打印 0,例如:

$ ./foo anything
sh: anything: not found
32512
$ echo $?
0

我的问题是:为什么 $?n 的值不同?我还在 Win32 下测试了该程序,echo %errorlevel% 给出了与 n 相同的值。谢谢!

最佳答案

如果以八进制或十六进制打印 n,您会发现它的低字节始终为 0。

如果您return WEXITSTATUS(n);,您的程序将以您期望的状态退出。

仔细阅读man systemman wait,你就会明白。

关于c - 为什么是$?调用 system() 后总是 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613460/

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