我在使用信号处理程序时遇到了这个问题。我有一个定义共享内存的父进程。它派生出两个子进程,它们具有用于某种类型信号的信号处理程序。现在,只要子进程接收到该特定信号,它们的信号处理程序就会处理该信号。
现在我需要跟踪信号处理程序处理信号的次数。我需要使用该共享内存来增加计数器的信号由任一子进程处理的次数
为此,我可能需要使用信号量。但我的问题是,每当信号由处理程序处理时,它必须检查是否正在访问共享内存,如果正在访问它不能增加计数器,那么它可能不得不阻塞。我认为我们不能阻止信号处理程序。
那么实现这一目标的最佳方法是什么。我的两个子进程都注册了相同的信号处理程序来处理类型为 1 的信号。因此,每当接收到该特定信号时,它们的两个相同的信号处理程序例程都会尝试增加计数器。
如何做到这一点?