因为信号是异步的,所以主程序可能是非常的 处理信号时的脆弱状态,因此在信号处理时 处理函数执行。因此,您应该避免执行任何操作 I / O操作或调用大多数库和系统功能 信号处理程序
我想在这种情况下进行测试,但我不知道如何将主程序变为脆弱状态
答案 0 :(得分:1)
我不认为“脆弱的国家”是一个技术术语。我并不熟悉Linux lernel如何处理信号,但是内核可能在执行信号处理时禁用(或缺少)某些安全措施,例如全局对象上的线程安全或不期望其他副作用。
例如,您的报价专门提到了IO操作。 IO操作通常是异步的,并且在完成时会引发中断,我希望内核不希望在处理信号时调用IO中断处理程序(我想这会抢占信号中当前运行的代码)如果中断处理程序修改了信号处理程序正在使用的某些资源,可能会将系统置于未定义状态,特别是如果正在处理的信号是用于同时等待IO操作的进程。