我正在尝试调用程序并获取其返回值。我使用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"
答案 0 :(得分:2)
您没有打印退出状态,而是打印终止进程的信号数。当子进程正常退出(WIFEXITED)时,您不会打印任何内容。 它应该是这样的:
if (WIFEXITED(status))
printf("%d\n", (int)WEXITSTATUS(status));