在Linux内核模块中监听新进程

是否有可能得到通知(通过callback或类似的)当一个新的进程执行,当一个是closures的,当状态改变(即停止,分页等)? 在user-land中,在/ proc上设置一个目录监听器是很容易的。

你有没有考虑过kprobes? 执行一些内核代码时,可以使用kprobes执行回调函数。 例如,您可以添加一个do_fork kprobe,以在本示例中创建新进程时进行警报。

同样,您可以添加do_exit()的探测器以在进程退出时捕获。

为了改变状态,你可以在sched_switch()上有一个返回探测器,并在状态改变时捕获。 根据您的应用程序,这可能会增加太多的开销。

如果您只希望收集数据,执行一些简单的处理,而不想花费更多的内核模块,systemtap可能是编写内核模块的一个很好的选择: https : //sourceware.org/systemtap/documentation html的

关于kprobes的更多细节: https ://www.kernel.org/doc/Documentation/kprobes.txt

sched_switch() systemtap示例: https : sched_switch()