我有一个C
代码,可以在shell上执行一些命令。代码是这样的:
int main(){
int x=0;
x=system("some command");
printf("Exit Status:%d\n",x);
return 0;
}
这里的问题是失败后我得到一些其他值而不是退出值到x。
假设我们在xyz
上执行bash
它会在找不到命令时以status = 127退出,如果命令存在且失败则退出1。如何将此127或1转换为C
代码。
答案 0 :(得分:3)
使用(至少在Linux上)与waitpid(2)
相关的宏int x = system("some command");
if (x==0)
printf("command succeeded\n");
else if (WIFSIGNALED(x))
printf("command terminated with signal %d\n", WTERMSIG(x));
else if (WIFEXITED(x))
printf("command exited %d\n", WEXITSTATUS(x));
等等。详细了解system(3)。传递给system
一些运行时生成的字符串时要小心code injection。