C Linux 信号处理

标签 c linux signals

我是操作系统的新手,在学习 Linux 信号处理时遇到了一些问题。

在 Linux 中,如果信号在系统调用期间到达,例如 pause(),程序将切换到内核模式并运行信号处理程序。然后根据处理函数,程序将执行函数告诉它做的任何事情。如果系统调用很重要并且不能/不应该被打断怎么办? (或者是否存在这样的不能被信号中断的系统调用?)

此外,如果内核正在处理另一个较早到达的信号时信号到达,会发生什么情况?以后会捕获新信号吗?

非常感谢!

最佳答案

你错了。信号处理程序不在内核模式下运行,而是在用户模式下运行。如果普通应用程序可以获得内核模式访问权限,这将是一个主要的权限升级错误。

您还对系统调用被中断感到疑惑。出于同样的原因,这不是问题:信号仅影响应用程序,而不影响处理系统调用的内核。

关于C Linux 信号处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35126081/

相关文章:

c - 这些 IP 地址来自哪里?

linux - 使用ssh在远程Windows机器上进行Docker登录

python - 使用 python 运行控制台命令

python - 让线程等待定时器或信号?

c - 将新任务分配给 forked() 进程

c - Visual Studio 未返回正确的 C 浮点值

c - 静态链接 ICU4C 使 uregex 函数失败

c - 如何通过单击按钮退出 gtk 应用程序?

c - 在 C 文件中重新声明不透明结构

linux - C-icap - 如何交叉编译?