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

标签 c linux process wait

对于子进程,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/

相关文章:

c - 如何删除二维字符数组中的字符串

c - GPS NMEA 字符串的解析代码

c - 几乎完成了 linux shell pipe

linux - 在没有临时文件的情况下使用命令的输出作为 `paste` 输入

linux - 如何从 Visual Studio 终端中删除组件?

c - 如何使用定义来初始化结构体?

c - 如何使用 PTRACE 获得多线程的一致 View ?

java - 执行显示控制台窗口的命令并获取进程的句柄

linux - 后台进程总是停止

bash - "detach/daemonize"Bash 脚本最简单的方法是什么?