【发布时间】:2021-03-17 07:57:16
【问题描述】:
我在子进程的退出代码中传递了一个参数,因此在父进程中我尝试调用另一个函数,该函数通过使用等待传递子进程传递的退出状态代码,但是我只得到-1作为使用wait调用的退出状态码,有什么办法可以让参数在调用wait方法的退出码中传入。
#include <stdio.h>
#include<stdlib.h>
#include <sys/types.h>
#include <unistd.h>
#include <string.h>
#include<sys/wait.h>
pid_t ppid;
void child();
void parent();
int get_child_exit_status()
{
int status=wait(&ppid);
return status; //returns -1 instead of 101
}
int main(void)
{
ppid = getpid();
fork();
child();
wait(&ppid);
printf("Child exited with status=%d",get_child_exit_status());
return 0;
}
void child()
{
pid_t c_pid = getpid();
if(c_pid == ppid)
{
return;
}
printf("This is a child\n");
int status;
scanf("%d",&status); //input 101
exit(status);
}
【问题讨论】:
-
见
man 3 wait。那里有一个例子......
标签: c multiprocessing