当进程在没有控制终端的情况下运行时会发生什么?该流程与标准流程有何不同?它失去了哪些功能,又获得了哪些功能?
更新#1
该问题被列为可能的重复问题:Unix 中控制终端的概念不包含答案。另外,另一个问题太宽泛,根本没有提到流程质量。
答案1
不多。
大多数情况下,没有控制终端的进程不会接收来自终端事件的信号(主要与作业控制相关)。
这些包括SIGINT
,如果收到中断字符(通常是 ^C),则中断前台进程(组);SIGTTIN
/SIGTTOU
如果进程尝试从后台对终端进行 I/O,则停止该进程;SIGHUP
当终端发现断开连接时,告诉控制进程(shell)终止。 (最初是调制解调器挂断。)
标准有详细说明如果你喜欢。