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

标签 c linux process wait

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

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

最佳答案

没有任何东西与wait()相同。通常的做法是使用kill(pid, 0)进行轮询,并查找ESRCH的返回值-1和errno来指示进程消失了。

更新:从 linux 内核 5.3 开始,有一个 pidfd_open syscall,它为给定的 pid 创建一个 fd,当 pid 退出时可以轮询该 fd 以获取通知。

关于c - 如何等待非子进程退出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42170132/

相关文章:

c - 欺骗 libdc1394

angularjs - 向 logstash 发出发布请求时出现 CORS 错误

linux - 如何计算程序文件中的行数(多个),过滤一些文件和一些行?

c - 打印最后一个环境的地址

c# - Process.RedirectStandardOutput 不起作用

c - 如何将包含 32 位 asm 的 C 程序编译成 .o 文件?

c++ - clang/clang++ 在 Windows 中找不到 C/C++ 头文件?

C: 如何在不记录 ENTER (\n) 的情况下获取用户输入?

algorithm - 我的流程/脚本如何避免陷入无限循环?

linux - 为什么fork()在子进程中返回0?