信号寿命的详细说明

问题描述:

当一个进程正在等待某个用户输入时,如果按下^ c,那么一个信号会进入杀死该进程的操作系统。然而,当这个进程是一个bash/python解释器时,也不会发生这种情况。另外echo^c在控制台上打印某些东西,所以我假定它是一个有效的Unicode字符。信号寿命的详细说明

那么,一些字符输入如何被重定向到输入流中,以便该进程消耗并且一些被用作信号。它在哪里决定,所有预先定义的配置被使用,以及这些配置值何时设置?

你已经偶然发现了TTY layer的神奇世界。

TL; DR是使用管道(例如文件或其他管道连接到标准输入)和控制台连接到标准输入之间有很大的区别。控制台的行规则是劫持^ C字符(这只是一个普通的8位字符),并将信号发送到前台进程组。