【问题标题】:How to be Notified when a Thread is Created in the System如何在系统中创建线程时得到通知
【发布时间】:2017-07-20 20:17:58
【问题描述】:

我想创建一个 C/C++ 程序,当在系统中创建线程时(而不是在当前进程)

  • 现有进程中的新线程
  • 新进程

我想要一个适用于 Linux 的解决方案。如果它可以在任何 UNIX 上移植就更好了。

  • 是否有我可以使用的 POSIX API?
  • 是否可以从/sys/kernel 中的“任何地方”获取此信息?
  • 还有其他解决方案吗?

【问题讨论】:

  • inotify 上的/proc 怎么样?

标签: c multithreading linux-kernel pthreads posix


【解决方案1】:

没有任何与系统监控/管理/任何相关的 POSIX 接口,并且可能也没有这种事实上的可移植接口。毫无疑问,没有任何可移植的东西可以收到有关任意线程创建的通知。

您可以在 Linux 上做 2 件基本的事情:

但是,我强烈建议您解释一下您需要/想要这个做什么。一个重要的注意事项是,在您对信息采取行动之前,所创建的任何内容都可能消失(除了 systemtap 案例,只要您将所有操作保留在探测中)。

【讨论】:

  • 另外,您似乎必须修改系统共享库或类似的东西才能让现有程序发挥作用。预建软件不会被构建为使用您设计的任何界面,因此您必须实现插入。我还想知道 OP 是否知道在繁忙的系统上每秒可以生成多少个线程。
  • proc 连接器是一种内核级机制,systemtap 可用于内核级和用户级探测器。我认为您应该将探针放在内核端是隐含的。一个额外的副作用是这也涵盖了容器,尽管这可能不是 OP 的一个因素。放置探头的最佳位置留作练习。看看主页上的脚本合集和一点内核代码阅读应该很容易给出答案。
猜你喜欢
  • 1970-01-01
  • 2014-08-04
  • 1970-01-01
  • 2020-08-25
  • 1970-01-01
  • 2023-03-31
  • 2017-02-03
  • 2011-05-12
  • 1970-01-01
相关资源
最近更新 更多