当他们在这种情况下说"fragile state"时,这实际上意味着什么?



由于信号是异步的,主程序可能处于处理信号时的脆弱状态处理程序函数执行。因此,您应该避免执行任何I/O操作或从调用大多数库和系统函数信号处理器

我想在这种情况下做一个测试,但我不知道如何将主程序变成脆弱状态

参考:高级Linux编程

我不认为"脆弱状态"是一个技术术语。我不太熟悉Linux lernel是如何处理信号的,但内核在执行信号处理时可能会禁用(或缺乏)某些保护措施,例如全局对象上的线程安全或不期望其他副作用。

例如,您的报价特别提到IO操作。IO操作通常是异步的,并且在其完成时引起中断,我预计内核不希望在处理信号时调用IO中断处理程序(我认为这会抢占信号处理程序中当前运行的代码),并且如果中断处理程序修改了信号处理程序正在使用的一些资源,特别是如果正在处理的信号是针对也在等待IO操作的进程的。

相关内容

最新更新