【发布时间】:2015-05-04 14:25:04
【问题描述】:
我目前正在上系统编程课,今天我们讨论了等待系统调用函数。我正在阅读有关 waitpid() 系统调用的部分,并在选项部分中列出了一个名为 WNOHANG 的部分。
pid_t waitpid*(pid_t pid, int *status, int options);
WNOHANG:如果 pid 指定的子项(来自参数)尚未更改状态,则立即返回,而不是阻塞。在这种情况下,waitpid() 的返回值为 0。如果调用进程没有与 pid 中的规范匹配的子进程,则 waitpid() 将失败并返回错误 ECHILD。
我了解 waitpid() 是为了解决 wait() 中的限制而实现的;但是,我不太确定您为什么要使用 WNOHANG 选项标志。
如果我要进行猜测,那将是父进程可以执行其他任务,并且可能会继续检查其子进程以查看它们是否已终止。类似于恶魔进程如何在后台等待请求。
任何情境示例或常规示例也会有所帮助。
提前致谢!
【问题讨论】: