在内核级别检测交互式进程



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

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

谢谢!

如果用户单击应用程序生成子进程,那么新生成的进程很可能是该进程的子进程。从内核中,您可以检查子进程列表。在来自父进程的点击处理实例上,这将是内核中current任务。因此,您可以循环访问client->children列表并找到流程。当前进程可能已经有子进程,那么您需要跟踪现有的子进程列表并跟踪新添加的内容。

最新更新