![进一步阅读](https://linux22.com/image/115797/%E8%BF%9B%E4%B8%80%E6%AD%A5%E9%98%85%E8%AF%BB.png)
信号由一个进程发送到另一个进程,或者从一个进程发送到另一个进程。
进程bash
通常在终端仿真器进程(例如 gnome 终端)中运行。
一个bash
进程依次运行其他进程。
kill
因此,当我们使用控制键或在运行的终端模拟器中运行向进程发送信号时bash
,哪个进程将信号发送到哪个进程?终端仿真器进程、bash 进程以及 bash 进程的子进程是如何参与的?
谢谢。
答案1
当执行kill
各种 shell 内置的命令时,shell 进程本身正在执行系统调用来发送信号。
当执行外部kill
命令时,是分叉运行该程序的进程,该程序正在执行系统调用来发送信号。
不存在“伪终端进程”这样的东西。 伪终端不是进程。 有一个终端仿真器进程,但该模拟器不是伪终端。
当一个特殊字符从终端或通过伪终端的主端从终端仿真器发送到内核中的行规则时,然后(假设行规则使终端处于规范输入模式,其中特殊字符是特殊的)是内核发送信号。