【问题标题】:Detect interactive process at kernel level在内核级别检测交互进程
【发布时间】:2013-10-09 02:24:25
【问题描述】:

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

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

谢谢!

【问题讨论】:

  • IPC 是什么意思?看起来您正在使用图形用户界面。
  • 其实我并不关心特定的用户界面。它可以是任何外围设备(鼠标、键盘、遥控器等)触发的任何东西。我在与信号、管道和套接字相关的系统调用中放置了跟踪:kill、pread、pwrite、read、readv、recv、recvfrom、rcvmsg、send、sendmsg、sendto、write、writev。

标签: debugging linux-kernel


【解决方案1】:

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

【讨论】:

  • 感谢您的回答。但我的问题不完整。我刚刚编辑了它。
  • 但这不是我的问题,不是吗?
猜你喜欢
  • 1970-01-01
  • 2021-12-29
  • 2014-04-24
  • 2015-04-08
  • 2011-05-22
  • 1970-01-01
  • 2012-07-06
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多