如何通过pid识别程序

时间:2014-07-26 15:30:08

标签: linux pid

我的标题不仅仅是明确的,所以随意改变它(不知道如何命名)

我使用php脚本来检查pid列表是否正在运行,我的问题是pid识别是不够的,其他一些程序可以在我的时间结束后获得pid号。

那么,我能做些什么来识别,而不是pid是我需要检查的好pid而不是另一个。

我认为哈希/proc/<pid>/cmdline,但即使这不是100%安全(另一个程序可以是相同的软件和相同的参数(这是罕见但可能)。

如果需要示例:

我运行了几个wget实例

其中一个有PID号8426

有些时候......

我检查PID 8426是否正在运行,这是我的php脚本反应并且不检查下载的文件但是事实是wget的PID 8426已经结束并且它是运行pid 8426的另一个程序。

如果新程序运行了很长时间(例如:服务),我可以等待很长时间让我的php脚本检查下载的文件。

2 个答案:

答案 0 :(得分:0)

您是否尝试过使用面向对象的范例,您可以将特定的PID编号封装到其特定对象(即特定程序)中?要实现这一点,您需要创建一个类(比如你给它任意名称“SOURCE”),从中可以获得这些程序作为属于该类的对象。这样做会将任何信息(例如PID),包括该特定程序的方法单独封装到该程序中,因此提供比执行散列更安全的方式。类似的方法可以在Python的面向对象编程范例中找到。

答案 1 :(得分:0)

您可以阅读/proc/<pid>/exe指向的二进制文件。以下概念是在shell中完成的,但可能可以用任何语言来完成,包括php:

$ readlink "/proc/$$/exe"
/bin/bash