系统()函数似乎返回的是调用进程退出码的128倍。
从手册页可以看到:
返回值: 如过出错则返回-1(例如fork(2)失败),否则返回命令的返回状态码。
这是我得到的结果。
从手册页可以看到:
返回值: 如过出错则返回-1(例如fork(2)失败),否则返回命令的返回状态码。
这是我得到的结果。
$ ls tinker.c
tinker.c
$ echo $?
0
$ ls notexisting
ls: cannot access notexisting: No such file or directory
$ echo $?
2
$ cat tinker.c
#include <stdio.h>
#include <stdlib.h>
int main(void)
{
printf("%d\n", system("ls tinker.c"));
printf("%d\n", system("ls notexisting"));
return 0;
}
$ gcc tinker.c -o tinker
$ ./tinker
tinker.c
0
ls: cannot access notexisting: No such file or directory
512
第一次调用表明我没有得到故障,但返回代码看起来与我从手册中读到的完全不同。我做错了什么?