调用子进程时退出状态56

时间:2014-04-08 19:41:55

标签: c fork

我正在尝试调用程序并获取其返回值。我使用fork()execv()来调用子进程,现在正在等待状态,但我收到56作为退出状态,我不明白为什么。我已经分别检查了子进程,它运行得很好。

56是什么意思,我该如何解决?


这是相关代码的一部分:

pid_t pid = fork(); 

if (pid < 0)                
    // handle error 

if (pid == 0) 
    execv(filename, argv);  // calls child process 

waitpid(pid, &status, 0); 

if (WIFEXITED(status))      
    // handle success 
else if(WIFSIGNALED(status)) 
    printf("%d\n", (int) WTERMSIG(status)); // here I get 56 now, when I print the error using stderror I get this: "Invalid request code"

1 个答案:

答案 0 :(得分:2)

您没有打印退出状态,而是打印终止进程的信号数。当子进程正常退出(WIFEXITED)时,您不会打印任何内容。 它应该是这样的:

if (WIFEXITED(status))      
    printf("%d\n", (int)WEXITSTATUS(status));