c - 如何等待非子进程退出

对于子进程,wait()waitpid() 函数可用于暂停当前进程的执行,直到子进程退出。但是这个函数不能用于非子进程。

还有其他函数可以等待任何进程退出吗?

最佳答案

没有等价于 wait()。通常的做法是使用 kill(pid, 0) 进行轮询,并寻找 ESRCH 的返回值 -1 和 errno 以指示该进程没了。

更新:自从 linux kernel 5.3 有一个 pidfd_open syscall,它为给定的 pid 创建一个 fd,可以在 pid 退出时对其进行轮询以获取通知。

https://stackoverflow.com/questions/1157700/

相关文章:

c - 关闭标准输出和标准输入文件描述符后重新打开它们

linux - bash 管道处理

linux - 我应该如何从非 root Debian Linux 守护进程登录?

linux - 在 shell 脚本的 for 循环中迭代行而不是单词

linux - Ubuntu中的Prolog编程

linux - 具有多个 execStart 的 Systemd

linux - crt1.o : In function `_start' : - undefine

linux - 如何从 Linux 命令行彻底关闭 Eclipse?

linux - 为什么用 grep -q 退出代码 141?

linux - 从核心转储中获取堆栈跟踪