c – 测试给定id的任何进程目前是否在Linux上运行的简单方法是什么?

在C中,我有一个绑定到pid的资源.有时,与该pid相关联的进程异常退出并泄漏资源.

因此,我正在考虑将pid放在记录资源正在使用的文件中.然后,当我去获取资源时,如果我看到一个项目已注册为正在使用,我将搜索以查看与pid匹配的进程当前是否正在运行,如果没有,则清理泄漏的资源.

我意识到一个新的未分离的pid现在共享相同数字的可能性非常小,但这比泄漏更好,我现在没有清理.

或者,也许有一个更好的解决方案,如果是这样,请建议,否则,我会追求pid录音.

更多详细信息:资源是通过tcp在客户端和服务器之间进行通信的端口号.只有一个客户端实例可以在计算机上使用给定的端口号.端口号取自一系列可用的端口号.在客户端运行时,它会记录它在磁盘上的特殊文件中使用的端口号,然后在退出时清除此条目.对于异常退出,当不再使用端口号时,这并不总是被清除并且端口号被注释为正在使用中.

最佳答案
要检查是否存在具有给定id的进程,请使用kill(pid,0)(我假设您在POSIX系统上).详情请见man 2 kill.

此外,您可以使用waitpid调用在进程完成时收到通知.

转载注明原文:c – 测试给定id的任何进程目前是否在Linux上运行的简单方法是什么? - 代码日志