读取信号处理程序内的共享数据

Met*_*est 9 c linux mutex signals signal-handling

我处于一种情况,我需要在信号处理程序(SIGSEGV信号处理程序,根据我的知识,每个线程基础)内读取二进制搜索树(BST ).BST可以由应用程序中的其他线程修改.

现在由于信号处理程序不能使用信号量,互斥量等因而无法访问共享数据,我该如何解决这个问题呢?请注意,我的应用程序是多线程的,并在多核系统上运行.

ILY*_*tov 4

您不应该从信号处理程序访问共享数据。您可以在以下文章中找到有关信号的更多信息:

供应用程序员使用的 Linux 信号

Linux 信号处理模型

关于 Linux 信号的一切

看起来到目前为止在linux中处理信号最安全的方法是signalfd。