微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何检查分支进程是否仍在运行c程序

我有一个分叉进程的PID。 现在,从我的c代码(在Linux上运行),我必须定期检查这个过程是否仍在运行或终止。 我不想使用像wait()或waitpid()这样的阻塞调用。 需要(最好)一个非阻塞的系统调用,它只是检查这个PID是否仍在运行,并返回孩子的状态。

什么是最好的和最简单的方法来做到这一点?

使用process_vm_readv从另一个进程修改整数值

Linux中signal和rt_signal syscalls有什么区别?

system()调用行为

如何在C / C ++中获得Linux系统调用输出

Linux系统调用,libc,VDSO和实施解剖

waitpid()函数可以使选项值WNOHANG不阻塞。 一如既往,请参阅手册页 。

也就是说,我不确定这个pid是否能保证不会被系统回收,从而可能会导致竞争。

在waitpid()使用WNOHANG选项。

kill(pid,0);

如果PID存在,这将“成功”(返回0)。 当然,它可能存在,因为原来的过程结束了,新的东西取代了它,这取决于你决定是否重要。

你可能会考虑注册一个SIGCHLD的处理程序。 这不取决于可以回收的PID。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐