linux - 当他们在这种情况下说 "fragile state"时,它实际上是什么意思?

标签 linux operating-system

Because signals are asynchronous, the main program may be in a very fragile state when a signal is processed and thus while a signal handler function executes. Therefore, you should avoid performing any I/O operations or calling most library and system functions from signal handlers

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

引用:Advanced Linux Programming

最佳答案

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

比如你的引文特别提到了IO操作。 IO 操作通常是异步的,并在它完成时引发中断,我希望内核不希望在处理信号时调用 IO 中断处理程序(我想这会抢占信号中当前运行的代码处理程序),如果中断处理程序修改了信号处理程序正在使用的某些资源,则系统可能会进入未定义状态,特别是如果正在处理的信号是针对也在等待 IO 操作的进程。

关于linux - 当他们在这种情况下说 "fragile state"时,它实际上是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25778578/

相关文章:

linux - Arch Linux 上来自 git (3.9.0svn) 的最新 LLVM 的“ undefined reference ”链接器错误

java - 以与操作系统无关的方式调用 JDK 终端实用程序?

python - 有没有一种干净的方法可以通过 python 检查计算机上是否存在给定用户?

operating-system - 操作系统中延迟和抖动之间的区别

linux - 数据 block 和页面有什么区别?

linux - Unix 缓存二进制文件吗?

python - 如何为具有依赖项的 Python 项目创 build 置/安装程序?

iphone - 使用哪个 iPhone SDK 来实现兼容性

linux - 我如何从 Linux 服务器(无图形用户界面)上的命令行测试网速?

java - WebDriver for Firefox : browser starts w/empty page, 挂起 2 分钟,重新启动,然后测试运行。为什么?