在Unix环境中检测过时的pid文件

时间:2016-10-23 17:16:48

标签: unix language-agnostic pid

在Unix环境中检测过时pid文件的标准跨平台方法是什么?假设我想杀死我的应用程序的旧实例,但如果该应用程序已经退出,我当然不希望用相同的PID破坏不相关的进程。

现在我找到了一种方法在我的Ubuntu上进行(因此可能是其他基于GNU / Linux的系统) - 下面的伪代码:

if ( mtime(pid_file) < mtime( "/proc/"+pid ) ) {
     /* process started AFTER the file creation */
     /* so it's not what we're looking for */
     unlink(pid_file);
     return 0;
};
/* proceed to kill & do all stuff */

但是这样的黑客会在其他系统上运行吗?无论如何,它应该是一个标准的任务,已有30多年的解决方案。

发现了一个类似的问题here,但未能找到我问题的明确答案。

谢谢。

1 个答案:

答案 0 :(得分:1)

/ proc / date的文件时间回到at least 1991;见p。 243.而且,虽然mtime可以伪造(例如通过touch -m --date=<needed_date> <target_file>),但对于userland应用程序,无法在其自己的/ proc / entry上执行此操作。