linux进程管理之wait系统调用
发布时间:2016-06-08 04:09:28 所属栏目: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; } (编辑:应用网_阳江站长网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
站长推荐