Ctrl + C 在 shell 中如何工作

Ctrl + C 在 shell 中如何工作

我正在阅读有关中断和信号的内容,并且无法理解以下场景。

假设 shell 执行一些命令,然后 shell 进程执行fork()+wait()命令,而子进程正在execv()使用要运行的新代码地址执行命令。
现在,假设我Ctrl C在 shell 内部按下,然后我假设来自键盘的中断将到达子进程,并且将调用相关的中断处理程序。

现在,我的问题是如何理解信号如何SIGINT发送到子进程(我在某处读到它是从父进程(即 shell 进程)发送的)以及 shell 如何再次运行(谁在唤醒他?)。
另一个问题是,我读到,如果任务进程描述符中未声明某些信号处理程序,那么它会在父进程中搜索信号处理程序,这是真的吗?

相关内容