我是操作系统的新手,在学习 Linux 信号处理时遇到了一些问题。
在 Linux 中,如果信号在系统调用期间到达,例如 pause(),程序将切换到内核模式并运行信号处理程序。然后根据处理函数,程序将执行函数告诉它做的任何事情。如果系统调用很重要并且不能/不应该被打断怎么办? (或者是否存在这样的不能被信号中断的系统调用?)
此外,如果内核正在处理另一个较早到达的信号时信号到达,会发生什么情况?以后会捕获新信号吗?
非常感谢!
最佳答案
你错了。信号处理程序不在内核模式下运行,而是在用户模式下运行。如果普通应用程序可以获得内核模式访问权限,这将是一个主要的权限升级错误。
您还对系统调用被中断感到疑惑。出于同样的原因,这不是问题:信号仅影响应用程序,而不影响处理系统调用的内核。
关于C Linux 信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35126081/