linux进程管理之wait系统调用
发布时间:2016-02-07 21:19:44 所属栏目:Linux 来源:网络整理
导读:六: wait4 ()系统调用 在父进程中,用wait4()可以获得子进程的退出状态,并且防止在父进程退出前,子进程退出造成僵死 状态。这是我们这节分析的最后一个小节了
|
eligible_child()用来判断子进程是否是我们想要wait的子进程.代码如下:
static int eligible_child(pid_t pid, int options, struct task_struct *p)
{
int err;
//根据PID判断是不是我们要wait的子进程
//pid >0:等待的子程程的进程号等于pid
//pid = 0:等待进程组号等于当前进程组号的所有子进程
//pid < -1 :等待任何进程组号等于pid绝对值的子进程
//pid == -1 :等待任何子进程
if (pid > 0) {
if (p->pid != pid)
return 0;
} else if (!pid) {
if (process_group(p) != process_group(current))
return 0;
} else if (pid != -1) {
if (process_group(p) != -pid)
return 0;
}
//如果子进程exit_signal ==-1且没有被跟踪.那不会对子进程进行回收
if (p->exit_signal == -1 && !p->ptrace)
return 0;
if (((p->exit_signal != SIGCHLD) ^ ((options & __WCLONE) != 0))
&& !(options & __WALL))
return 0;
/*
* Do not consider thread group leaders that are
* in a non-empty thread group:
*/
//如果子进程是进程组leader,且进程组不为空
if (delay_group_leader(p))
return 2;
err = security_task_wait(p);
if (err)
return err;
return 1;
} (编辑:应用网_镇江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐

