对于子进程,wait()
和 waitpid()
函数可用于暂停当前进程的执行,直到子进程退出。但是这个函数不能用于非子进程。
还有其他函数可以等待任何进程退出吗?
最佳答案
没有等价于 wait()
。通常的做法是使用 kill(pid, 0)
进行轮询,并寻找 ESRCH
的返回值 -1 和 errno
以指示该进程没了。
更新:自从 linux kernel 5.3 有一个 pidfd_open syscall,它为给定的 pid 创建一个 fd,可以在 pid 退出时对其进行轮询以获取通知。
关于c - 如何等待非子进程退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1157700/