有没有一种方法可以从信号处理程序中调用非异步安全函数?或者这是不可能的?
我并不是要在信号处理程序中设置一个标志,然后在我的“主代码”中打印一些东西,但在这种情况下,信号处理程序将自己定义我的程序的逻辑流程。
最佳答案
从技术上讲,您可以在信号处理程序中调用或编写任何函数,没有什么可以阻止您这样做。
之所以不鼓励,是因为当信号处理程序正在处理您的操作时,可能会引发另一个信号,这可能会使信号处理程序跳转到更高优先级的信号处理程序。
这种情况会导致竞争和难以调试的问题,因为我们不知道信号处理的顺序。
这就是为什么信号处理程序应该是轻量级的,以避免难以调试的竞争条件,通常我们设置标志以指示信号已被引发并在读取这些标志的主线程或另一个线程中处理它。
关于c++ - 信号处理程序异步安全功能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34465275/