【发布时间】:2018-06-01 19:56:14
【问题描述】:
如果一个进程打开了多个终端,我们如何知道哪些文件描述符是用于进程会话的控制终端,哪些是非控制终端?
【问题讨论】:
-
显示创建终端的代码和你所说的文件描述符,然后我们就可以知道它们之间是否有区别。
-
是什么让您认为它们中的任何一个都在控制终端?如果进程以控制终端启动,则相关 fd 为 0、1 和 2 的概率非常高。您创建的描述符取决于您的进程来跟踪。
-
@WilliamPursell 我想知道是否有任何现有的 fd 用于控制终端(如果有),以及如何将它们与非控制终端区分开来。
-
POSIX 说 3.115 控制终端 与会话关联的终端。每个会话最多可以关联一个控制终端,一个控制终端只关联一个会话。来自控制终端的某些输入序列导致信号被发送到与控制终端关联的前台进程组中的所有进程。 一个进程只能与单个会话相关联,因此一个进程最多只能有,一个控制终端。