子进程可以等待其同级进程并获得退出状态吗? [英] Can a child process wait for it's sibling process, and get its exit status?
本文介绍了子进程可以等待其同级进程并获得退出状态吗?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我正试图从子进程中获取其同级"的退出状态,
I'm trying to get from a child process the exit status of its 'sibling',
我试图做到这一点:
int main(void){
int i,j,status,p1;
pid_t pids[2],pid;
for (i = 0; i < 2; i++){
pids[i]=fork();
/*child 1*/
if(pids[i]==0 && i==0)exit(5);
/*child 2*/
else if(pids[i]==0 && i==1){
waitpid(pids[0],&p1,0);
exit(WEXITSTATUS(p1));
}
}
for(j=0;j<2;j++ ){
pid = wait(&status);
if(pid==pids[0]){
printf("child process 0 exit with status %d\n",WEXITSTATUS(status));
}
else if(pid==pids[1]){
printf("child process 1 exit with status %d\n",WEXITSTATUS(status));
}
}
return 0;
}
但是我得到的输出是:
child process 0 exit with status 5
child process 1 exit with status 0
有办法吗?
推荐答案
否.您只能在创建的进程上wait()
.
No. You can only wait()
on a process that you created.
这篇关于子进程可以等待其同级进程并获得退出状态吗?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文