我正在 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 system
和man wait
,你就会明白。
关于c - 为什么是$?调用 system() 后总是 0?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8613460/