按ctrl + c时如何传输信号

时间:2016-01-20 07:22:10

标签: linux-kernel interrupt-handling

据我所知,在bash中运行的每个进程都是该bash的子进程。 例如,如果我在bash中运行无限循环,操作系统将分叉bash并创建一个新的子进程来运行该循环。 然后,如果我按ctrl + c,子进程将被终止。 现在我对信号的发送者是谁感到困惑,因为我认为父bash进程现在正在等待。 它是子进程本身还是内核?据我所知,键盘活动可能导致硬中断,只能由内核处理,或者当按下键时子进程是否转为内核状态?

1 个答案:

答案 0 :(得分:0)

您的理解不正确。

它不是" os分叉bash",它是bash forking自己,除了你想到的琐碎案例,首先没有分叉。

无论哪种方式,tty驱动程序"发送"到前台进程的信号(这里:bash),并且所述进程可以捕获它并对其进行操作,例如:打破循环。