c - 使用 Control + C 的进程突然结束是陷阱还是中断?

标签 c linux process signals interrupt

似乎difference between a trap and an interrupt很清楚:陷阱是对内核的软件调用(例如通过异常),而中断与硬件相关(磁盘、I/O 和外围设备,例如鼠标和键盘……) (了解更多关于 the difference here 的信息)。

知道了这些,按Control+C结束进程应该归到哪一类呢?它是一个软件调用的调用,因此是一个陷阱,因为它可以从 Shell 等执行,还是一个中断,因为它是 CPU 从键盘接收到的信号?还是中断完全在用户域之外,这意味着它是硬件在用户无法达到的级别上与 CPU 交互?

谢谢!

最佳答案

它首先是一个信号 — 按下 Control-C 会导致内核向当前前台进程发送一个信号(SIGINT 类型)。如果该进程没有为该信号设置处理程序(使用来自 signal() 系列的系统调用之一),它会导致进程被终止。

我想该信号是“中断”信号,但这与硬件中断无关。这些仅供内核内部使用。

关于c - 使用 Control + C 的进程突然结束是陷阱还是中断?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25920154/

相关文章:

powershell - 使用Powershell Windows 2008导出特定进程

java - 启动外部进程失败: cannot connect to X server

android - 区分 Application 对象与 Android 上的 Activity 和 BroadcastReceiver

c - 错误 : expected ')' before

c - 两次将指针转换为 `void*` 怎么会无效?

linux - 如何用file2中的相同编号替换file1中的相同编号

linux - tar 备份错误

c - Windows编程中的Console是什么意思?

c - 在 Linux 中用 C 语言读取 RS232 串行引脚

linux - 我从头开始在 Linux 中提到的 'make' gcc-5.3.0 包中出现错误