在Unix中如何使用wait()作为非阻塞命令?

时间:2018-06-29 05:38:36

标签: c unix wait man

wait() man page

  

wait()系统调用将挂起调用线程,直到执行   它的一个子终止。

关于为什么使用wait(),它说

  

对于终止的孩子,执行等待可以使系统   释放与孩子有关的资源;如果没有等待   执行,则终止的孩子仍然处于“僵尸”状态

因此,使用wait()和wait()阻止命令是一个好习惯。这就是我从手册页中得出的内容。

如何以非阻塞方式使用wait(),以便调用线程可以处理其事务,并且当子状态更改时,它会得到通知。

1 个答案:

答案 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())。