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

在Unix环境中检测过时的pid文件,unix,language-agnostic,pid,Unix,Language Agnostic,Pid,在Unix环境中,检测陈旧pid文件的标准跨平台方法是什么?假设我想杀死我的应用程序的一个旧实例,但是如果应用程序已经退出,我当然不想用相同的PID中断一个不相关的进程 现在,我找到了一种在我的Ubuntu(因此可能还有其他基于GNU/Linux的系统)上实现这一点的方法——伪代码如下: if ( mtime(pid_file) < mtime( "/proc/"+pid ) ) { /* process started AFTER the file creation */

在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 */
if(mtime(pid_文件)
但这样的黑客会在其他系统上工作吗?无论如何,这应该是一项标准任务,解决方案已经有30多年的历史了

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


谢谢。

文件时间位于/proc/date back to;见第页。243而且,尽管mtime可以伪造(例如通过
touch-m--date=
),但对于一个userland应用程序来说,靠它自己的/proc/entry是无法伪造的