当用户程序被 ^C 中断时,默认的信号处理程序是在用户模式还是内核模式下运行?
如果处于内核模式,哪个内核子系统调用默认信号处理程序?
我在 sigaction 的文档和联机帮助页中找不到任何引用。我在采访中被问到这个问题。
最佳答案
用户级代码总是在用户模式下运行。如果信号处理程序已由该进程(或其环境 - 例如 C 库设置例程)设置,则包括信号处理程序。
如果没有为给定信号注册的用户模式信号处理程序,并且它没有被忽略(或不可忽略/不可捕获为 SIGKILL 和 SIGSTOP),则与该信号相关的操作(终止、核心转储、挂起、恢复)可以完全在内核端进行。
信号传递主要由内核中的进程调度程序子系统处理。
关于c - 用户程序被 ^c 中断,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5715047/