如何获取系统运行的命令状态()

我在我的c代码中使用一个系统调用

#include <sys/stat.h>
#include <stdio.h>

int
main(int argc, char *argv[])
{
    int a = system("./test12.out");  //here if i give any wrong command
    system("echo $?")
    printf("system return is %d",a);
}

我当前文件夹中没有任何test12.out文件.现在输出是

sh: ./test12.out: No such file or directory
0
system return is 32512

这是我的shell命令失败但我怎么知道我的c代码?

编辑:

那么,我可以这样做吗?

int main(int argc, char *argv[])
{
    int a = system("dftg");

    if(a == -1)
        printf("some error has occured in that shell command");
    else if (WEXITSTATUS(a) == 127)
        printf("That shell command is not found");
    else
        printf("system call return succesfull with  %d",WEXITSTATUS(a));
}
最佳答案
如果a == -1,则呼叫失败.否则,退出代码为WEXITSTATUS(a).

引用man 3系统:

RETURN VALUE
       The value returned is -1 on  error  (e.g.   fork(2)  failed),  and  the
       return  status  of the command otherwise.  This latter return status is
       in the format specified in wait(2).  Thus, the exit code of the command
       will  be  WEXITSTATUS(status).   In case /bin/sh could not be executed,
       the exit status will be that of a command that does exit(127).

       If the value of command is NULL, system() returns non-zero if the shell
       is available, and zero if not.

转载注明原文:如何获取系统运行的命令状态() - 代码日志