wait()系统调用将挂起调用线程,直到执行 它的一个子终止。
关于为什么使用wait(),它说
对于终止的孩子,执行等待可以使系统 释放与孩子有关的资源;如果没有等待 执行,则终止的孩子仍然处于“僵尸”状态
因此,使用wait()和wait()阻止命令是一个好习惯。这就是我从手册页中得出的内容。
如何以非阻塞方式使用wait(),以便调用线程可以处理其事务,并且当子状态更改时,它会得到通知。
答案 0 :(得分:0)
wait()
始终处于阻止状态。
waitpid()
可用于阻止或不阻止。
我们可以将waitpid()
用作以下格式的非阻塞系统调用:
int pid = waitpid(child_pid, &status, WNOHANG);
WNOHANG
->无论孩子的状态如何,都立即返回。
参考:https://www-users.cs.umn.edu/~kauffman/4061/04-making-processes.pdf
页面编号:13(无阻塞waitpid())。