程序挂起怎么理解?

2016-05-18 10:17:19 +08:00
 wenyu1001
比如说一个父进程 fork 出子进程后,父进程挂起,如何实现?

thanks.
2408 次点击
所在节点    问与答
6 条回复
hxndg
2016-05-18 10:19:43 +08:00
没明白啥意思,你是说父进程调用 wait 或者 waitpid 么?
jimzhong
2016-05-18 10:42:58 +08:00
如果需要等待子进程,可以在父进程 fork 后立即调用 wait4 或者 waitpid ,这样父进程就会被阻塞。直到子进程状态变化。
hxndg
2016-05-18 10:58:15 +08:00
@jimzhong 实际情况里是调用 wait4 比较多么?我不太明白哈, wait3/4 不是只比 wait 多一个返回资源概述的参数么?
wenyu1001
2016-05-18 11:21:27 +08:00
@hxndg

wait3 等待任意子 pid ,等价 waitpid(-1, status, options);
wait4 等待指定 pid ,等价 waitpid(pid, status, options);

http://linux.die.net/man/2/wait4
imcczy
2016-05-18 11:21:43 +08:00
OS 内部有专门的数据结构来保存进程的相关信息,如寄存器等,每一次切换都会有进程数据的保存和恢复。一个进程应该有 running , ready , block 三个状态,具体的切换由专门的调度系统控制。
jimzhong
2016-05-18 11:44:45 +08:00
@hxndg 最新的 manual 里面 wait3 和 wait4 已经 obsolete 了,推荐使用 waitid 和 waitpid

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/279446

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX