2017-07-29 79 views
2

當一個進程正在等待某個用戶輸入時,如果按下^ c,那麼一個信號會進入殺死該進程的操作系統。然而,當這個進程是一個bash/python解釋器時,也不會發生這種情況。另外echo^c在控制檯上打印某些東西,所以我假定它是一個有效的Unicode字符。信號壽命的詳細說明

那麼,一些字符輸入如何被重定向到輸入流中,以便該進程消耗並且一些被用作信號。它在哪裏決定,所有預先定義的配置被使用,以及這些配置值何時設置?

回答

1

你已經偶然發現了TTY layer的神奇世界。

TL; DR是使用管道(例如文件或其他管道連接到標準輸入)和控制檯連接到標準輸入之間有很大的區別。控制檯的行規則是劫持^ C字符(這只是一個普通的8位字符),並將信號發送到前臺進程組。