检测内核级别的交互过程

时间:2013-10-08 09:46:43

标签: debugging linux-kernel

我正在尝试在内核级别检测交互式进程。 例如,如果用户点击某个应用程序窗口,我想检测从该用户交互产生的所有进程。 我的问题也没有在那里完成。有些情况下,用户交互启动的那些进程将与其他现有进程(例如后台服务)进行通信,并在提供一些GUI反馈之前等待该服务响应。我希望能够跟踪整个工作流程,并说出类似于在时间1通过鼠标点击启动的流程A,然后在时间2与流程B通信,然后流程B在时间3响应流程A,最后流程A在时间4结束。对于由交互式操作触发的工作流程所引发的内容,一步一步的细化。最后说交互式工作流X的响应时间为Y,并涉及一组M个进程。

有什么想法吗? 到目前为止,我一直在尝试的是检测与处理间通信相关的系统调用(但没有运气)。也许我没有在正确的位置追踪。

谢谢!

1 个答案:

答案 0 :(得分:0)

如果用户点击某个应用程序会生成子进程,则很可能新生成的进程将成为其子进程。从内核中,您可以检查子进程列表。在来自父进程的单击处理实例上,这将是内核中的current任务。因此,您可以遍历client->children列表并查找进程。可能当前进程已经有子进程,那么您需要跟踪现有的子进程列表并跟踪新的进程。