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