当会话领导者获取控制终端时,会话中的其他现有进程如何也获取控制终端?

当会话领导者获取控制终端时,会话中的其他现有进程如何也获取控制终端?

假设有一个会话,其中有多个进程并且没有控制终端。

当会话领导者创建到控制终端的连接时,

  • 同一会话中的其他进程如何得知该会话有一个控制终端并且

  • 他们怎么也能使用控制终端呢?

我提出这个问题的原因如下。通常,进程调用setsid()启动新会话并成为其领导者,并调用open()连接到控制终端。然后会话领导者继续处理fork()子进程,子进程将文件描述符继承到控制终端。

然后我想知道如果一个会话已经有多个进程但没有控制终端,然后领导者创建到控制终端的连接,然后会话中的其他进程怎么办?

谢谢。

答案1

会话领导者在获得控制终端后创建的任何新子进程也将拥有该控制终端。控制终端是从父级继承的。

换句话说:现有的孩子不受影响。

相关内容