据我所知,在bash中运行的每个进程都是该bash的子进程。 例如,如果我在bash中运行无限循环,操作系统将分叉bash并创建一个新的子进程来运行该循环。 然后,如果我按ctrl + c,子进程将被终止。 现在我对信号的发送者是谁感到困惑,因为我认为父bash进程现在正在等待。 它是子进程本身还是内核?据我所知,键盘活动可能导致硬中断,只能由内核处理,或者当按下键时子进程是否转为内核状态?
答案 0 :(得分:0)
您的理解不正确。
它不是" os分叉bash",它是bash forking自己,除了你想到的琐碎案例,首先没有分叉。
无论哪种方式,tty驱动程序"发送"到前台进程的信号(这里:bash),并且所述进程可以捕获它并对其进行操作,例如:打破循环。