一尘不染

如何检测Linux上程序的启动?

linux

我写了一个简单的守护程序。当我运行任何程序时,该守护程序都应响应。这个怎么做?在大守护程序循环中:

while(1)
{
   /* function which catches new programm running */
}

当我运行新程序(创建新进程)时,在Linux中要调用什么函数?


阅读 271

收藏
2020-06-02

共1个答案

一尘不染

我不知道是否存在更好的方法,但是您可以定期扫描/proc文件系统。

例如,/proc/<pid>/exe是到流程可执行文件的符号链接。

在我的系统(Ubuntu /
RedHat)上,/proc/loadavg包含正在运行的进程数(正斜杠后的数字)以及最近启动的进程的pid。如果守护程序轮询文件,则对两个数字之一进行的任何更改都会告诉它何时需要重新扫描以/proc查找新进程。

这绝不是防弹的,而是我能想到的最合适的机制。

2020-06-02