Linux系统中waitpid函数的使用实例
在写完OSTEP第五章课后习题之后,通过第八题的答案记录一下自己目前对waitpid()的尝试结果,目前的尝试仅限于进程执行的阻塞和等待,轮询和非阻塞的状态暂时没有遇到,日后补充。
进程等待
waitpid()不能用于子进程等待更早的另外一个子进程,如果尝试运行则会返回-1。(在父进程中则等待并返回子进程对应的pid)
这里举例说明,以下为一个不包含任何waitpid()的原始代码
1 | |
该代码通过waitpid()函数可以实现在rc_1和rc_2都执行完毕之后,再执行主进程的内容,修改如下
1 | |
但是在子进程中调用waitpid()是不能做到让rc_2等待rc_1的。参考:stackoverflow
比如修改rc_2的代码如下
1 | |
通过以上的代码并不能让rc_2等待rc_1,如果尝试输出wr会得到wr == -1(在父进程中则应该是等待进程的pid)
Linux系统中waitpid函数的使用实例
https://halc.top/p/840f43e7