1、Single Unix Specification支持一个取得进程终止状态的函数--waitid,此函数类似于waitpid:
pid_t wait(int *status);
pid_t waitpid(pid_t pid, int *status, int options);
int waitid(idtype_t idtype, id_t id, siginfo_t *infop, int options);
2、wait3和wait4
pid_t wait3(int *status, int options,struct rusage *rusage);
pid_t wait4(pid_t pid, int *status, int options,struct rusage *rusage);
3、竞争条件
{ pid_t pid; pid = fork(); if(pid < 0){} else if(pid == 0)//一级子进程 { pid = fork(); { if(pid < 0){} else if(pid > 0)//一级子进程 { exit(0); } //二级子进程,睡眠2秒后退出;也就是说二级子进程肯定会后面退出,变成孤儿进程 sleep(2); printf("second child, parents"); exit(0); } } if(waitpid(pid, NULL, 0) != pid){} //这个地方等待的pid算等待谁呢???? exit(0); }
还没有评论,来说两句吧...