如何在C中获取shell命令[在system()中运行)的退出状态?

时间:2015-11-19 17:19:46

标签: c command-line

我有一个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代码。

1 个答案:

答案 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