Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/58.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 如何在系统中创建线程时得到通知_C_Multithreading_Linux Kernel_Pthreads_Posix - Fatal编程技术网

C 如何在系统中创建线程时得到通知

C 如何在系统中创建线程时得到通知,c,multithreading,linux-kernel,pthreads,posix,C,Multithreading,Linux Kernel,Pthreads,Posix,我想创建一个C/C++程序,当在系统中创建线程时(而不是在当前进程中),该程序会“实时”(即尽可能快地)得到通知: 现有进程中的新线程 新工艺 我想要一个在Linux上工作的解决方案。如果它在任何UNIX上都是可移植的,那就更好了 有我可以使用的POSIXAPI吗 是否可以从/sys/kernel中的“任意位置”获取此信息 还有其他解决办法吗 没有POSIX接口用于任何与系统监控/管理相关的东西,而且可能也没有类似的事实上的可移植接口。最肯定的是,没有任何可移植的东西可以得到关于任意线程创

我想创建一个C/C++程序,当在系统中创建线程时(而不是在当前进程中),该程序会“实时”(即尽可能快地)得到通知:

  • 现有进程中的新线程
  • 新工艺
我想要一个在Linux上工作的解决方案。如果它在任何UNIX上都是可移植的,那就更好了

  • 有我可以使用的POSIXAPI吗
  • 是否可以从
    /sys/kernel
    中的“任意位置”获取此信息
  • 还有其他解决办法吗

没有POSIX接口用于任何与系统监控/管理相关的东西,而且可能也没有类似的事实上的可移植接口。最肯定的是,没有任何可移植的东西可以得到关于任意线程创建的通知

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

  • 所谓的。就我个人而言,我从来没有玩过它,但很明显,它还是挺管用的

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

关于
/proc
inotify
如何,似乎您必须修改系统共享库或类似的东西,才能让现有程序发挥作用。预构建的软件不会使用您设计的任何接口,因此您必须实现插入。我还想知道OP是否知道在繁忙的系统上每秒可以生成多少线程。proc连接器是一种内核级机制,systemtap可以用于内核级和用户级探测。我认为应该将探测器放在内核端,这是隐含的。一个额外的副作用是,这也包括容器,尽管这可能不是OP案例中的一个因素。最好的放置探头的地方是留作练习。查看主页上的脚本集合和一点内核代码阅读应该可以很容易地给出答案。