Linux内核0.11版本sys_waitpid()函数分析

文章内容摘自与Linux内核完全注释(修正版v1.9.5)5.10.2部分
系统调用waitpid()。挂起当前进程,直到pid 指定的子进程退出(终止)或者收到要求终止该进程的信号,或者是需要调用一个信号句柄(信号处理程序)。如果pid 所指的子进程早已退出(已成所谓的僵死进程),则本调用将立刻返回。子进程使用的所有资源将释放。如果pid > 0, 表示等待进程号等于pid 的子进程。如果pid = 0, 表示等待进程组号等于当前进程组号的任何子进程。如果pid < -1, 表示等待进程组号等于pid 绝对值的任何子进程。 [ 如果pid = -1, 表示等待任何子进程。]若options = WUNTRACED,表示如果子进程是停止的,也马上返回(无须跟踪)。 若options = WNOHANG,表示如果没有子进程退出或终止就马上返回。如果返回状态指针stat_addr 不为空,则就将状态信息保存到那里。
142 int sys_waitpid(pid_t pid,unsigned long * stat_addr, int options)
143 {
144 int flag, code;
145 struct task_struct ** p;
147 verify_area(stat_addr,4);
148 repeat:
149 flag=0;
// 从任务数组末端开始扫描所有任务,跳过空项、本进程项以及非当前进程的子进程项。
150 for(p = &LAST_TASK ; p > &FIRST_TASK ; --p) {
151 if (!*p || *p == current) // 跳过空项和本进程项。
152 continue;
153 if ((*p)->father != current->pid) // 如
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值