答案1
并不真地。信号等由终端驱动程序处理,因此 shell 并不真正知道您是否键入了文字 ctrl-C 还是kill
从另一个窗口向其发送了相同的信号。
Keystrokes -> Terminal -> Terminal driver -> Foreground process
当 shell 不是前台进程时(例如,当您使用它启动交互式程序或实际上任何前台进程时),该程序会接收键盘输入和来自终端驱动程序的任何信号。
默认情况下,标准输入来自终端,但您可以运行 shell,其输入从文件或网络流重定向,例如,shell 并不真正知道其中的区别。类似地,shell 可以为其子进程重定向标准输入、输出和错误流,而不管是否涉及终端。