在linux中即时检测新进程

我正在尝试在用户空间中创build一个设置进程相似性的应用程序。 我希望程序在内核产生新的pid / tid时立即触发。 我试图从内核的do_fork()方法写入/ proc下的文件节点,但我觉得它可能有太多的开销。

有没有人知道任何替代scheme来检测一个新的stream程创build后立即产生?

如果监视do_fork()是要走的路,那么通过系统调用callback用户空间程序会比使用fs节点进行通信更快?

使用NETLINK_CONNECTOR套接字。 内核会告诉你一些进程事件,包括fork()和exec()。 您的内核中必须启用CONFIG_CONNECTOR和CONFIG_PROC_EVENTS。

这里有一个相关的问题更多的细节:

检测Linux平台上的程序启动

有关完整的套接字NETLINK_CONNECTOR示例,请参阅:

http://bewareofgeek.livejournal.com/2945.html

顺便说一下,Inotify不起作用。 它不会在/ proc /检测新进程:

https://bugs.launchpad.net/ubuntu/+source/linux/+bug/454722

Forkstat是一个程序,记录进程fork()[其他]安装它:

$ sudo apt-get install forkstat 

用它来记录“叉”事件:

 $ forkstat -e fork