在 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,但未能找到我的问题的明确答案。
谢谢。
/proc/ 处的文件时间可追溯到至少1991年;见第14页。 243. 而且,尽管 mtime 可以伪造(例如通过touch -m --date=<needed_date> <target_file>
),对于用户态应用程序来说,无法在其自己的 /proc/ 条目上执行此操作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)