c - 用户程序被 ^c 中断

标签 c linux signals

当用户程序被 ^C 中断时,默认的信号处理程序是在用户模式还是内核模式下运行?

如果处于内核模式,哪个内核子系统调用默认信号处理程序?

我在 sigaction 的文档和联机帮助页中找不到任何引用。我在采访中被问到这个问题。

最佳答案

用户级代码总是在用户模式下运行。如果信号处理程序已由该进程(或其环境 - 例如 C 库设置例程)设置,则包括信号处理程序。

如果没有为给定信号注册的用户模式信号处理程序,并且它没有被忽略(或不可忽略/不可捕获为 SIGKILL 和 SIGSTOP),则与该信号相关的操作(终止、核心转储、挂起、恢复)可以完全在内核端进行。

信号传递主要由内核中的进程调度程序子系统处理。

关于c - 用户程序被 ^c 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715047/

相关文章:

Python:获取当前行运行时间

c - 是否可以使用回调类型定义来定义函数?

java - JBOSS_HOME 未在 Linux 中正确设置,Eclipse 中的 System.getenv 返回 null

c++ - 在不使用交换的情况下分配最大缓冲区

python - Python 中的信号处理程序和日志记录

python - 是否有像 Django 信号一样提供 'signals'(事件)功能的通用 Python 库?

ios - 如何在 iOS 项目中使用 LibXtract?

c - 在 Else-If 构造中使用最后一个 else 语句

c++ - CUDA C和C++的解释

linux - 使用 PAM 在 Linux 上验证用户名