Linux编程接口说SIGHUP
发送到终端的控制过程
在工作站上关闭终端窗口时。这是因为与终端窗口相关联的伪终端的主端的最后一个打开的文件描述符已关闭。
我的理解是,为从属端创建了一个终端窗口,而一个主控端可以有多个从属端。因此,当关闭终端窗口时,仅意味着与该终端窗口相关联的伪终端从站的最后一个打开的文件描述符已关闭。为什么引用中提到“主”方?
谢谢。
我的理解是,为从属端创建了一个终端窗口,而一个主控端可以有多个从属端。
伪终端始终只有一个主机侧和一个从机侧。它只是带有一些额外操作的双向管道[1]。
一个可以打开多个窗口/选项卡的终端仿真器还将处理多个伪tty主文件。
正如我在另一个答案中已经解释的那样,当用户尝试关闭窗口或其选项卡之一时,终端仿真器可以做自己的事情。例如,xterm
不会关闭pty的主端,而只会将其发送SIGHUP
到tty的进程组,并且仅当in in中启动的进程退出或无法使用自身时才销毁窗口(并退出)。 pty的主要部分不再存在(例如,由于其从属侧的所有句柄都已关闭)。
[1]。在具有STREAMS的SystemV系统上,那些额外的操作是模块化的,必须通过进行“推送” ioctl(I_PUSH)
。在Linux和* BSD上,它们是硬连线的。另外,pty的行为还没有完全标准化。尝试从没有主服务器的从服务器读取数据,反之亦然,EIO
在Linux上将失败,但在FreeBSD上返回0(EOF)。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句