openpty()有什么作用? “openpty()函数找到可用的伪终端”是什么意思?

时间:2017-12-14 05:58:00

标签: linux unix terminal pty

我觉得这很愚蠢(“只是RTFM!”),但我无法理解这个手册页。描述openpty()的{​​{3}}:

  

openpty()函数找到可用的伪终端并返回   amaster和aslave中主服务器和从服务器的文件描述符。如果   name不为NULL,从属名称返回名称。如果   termp不为NULL,slave的终端参数将被设置为   在termp中的值。如果winp不为NULL,则为slave的窗口大小   将设置为winp中的值。

这是什么意思?

我的猜测是openpty()试图找到对应于进程树中较高位置的终端仿真器的伪终端(某些nth-parent,即运行该程序的终端仿真器,如果有的话) 。但是,文档听起来像openpty()只是随意地从/dev/pts中抓取一些内容。

此外,“可用”是什么意思?似乎“可用”在伪终端的上下文中具有多重含义(例如,内核将允许终端仿真器创建伪终端,可以读/写伪终端)。

1 个答案:

答案 0 :(得分:1)

  

然而,文档使它听起来像openpty()只是任意抓取   某些东西/ dev / pts。

就是这样。

  

此外,“可用”是什么意思?似乎“可用”了   在伪终端的背景下的多重含义(例如内核   将让终端仿真器创建一个伪终端,一个伪终端   可以读/写)。

可用只是指另一个进程当前未使用的

  
    

openpty()函数找到一个可用的伪终端并返回     amaster和aslave中主服务器和从服务器的文件描述符。如果     name不为NULL,从属名称返回名称。如果     termp不为NULL,slave的终端参数将被设置为     在termp中的值。如果winp不为NULL,则为slave的窗口大小     将设置为winp中的值。

  
     

这是什么意思?

您将收到操作伪术语,其从属部分,主要部分及其文件名所需的所有数据。

伪术语通过实现终端输入/输出语义来模拟真实终端。它们用于许多环境中,用于模拟连接的终端(例如,当您通过ssh登录远程系统时会发生什么)或控制某些交互式程序(设计一个必须运行shell的GUI终端,例如)。

  

我觉得这很愚蠢(“只是RTFM!”)

当然不是那种情况,终端和会话管理在开始时很难处理。

- - - - - - - - 编辑

真实终端。它以前如何?在早期(不是很早,恐龙世界更可怕)连接到我们使用终端的系统,带键盘的简单设备,屏幕(没有图形)和一些小硬件和软件来管理线路插入计算机插头之一。因此,在操作系统中需要管理来自终端的所有输入/输出:在需要时回显键入的字符,缓冲输入/输出以便能够删除命令行上的字符等。该OS部分通过管理终端驱动程序表示为/dev/ttyXXX之类的设备。一个这样的物理设备,一个OS终端设备。

现在这样的物理设备不再存在了,除了在某些特殊情况下,比如服务器控制台(我的意思是直接连接到机器!或者你的屏幕在启动时,当所有这些奇怪的消息出现在文本模式时,等等)。我们现在通过许多不同的虚拟事物连接到操作系统(今天的计算机世界是关于虚拟性),就像模仿物理终端行为的GUI终端一样。然后旧物理线路的两端部分以伪终端表示,它分为两部分:主设备和从设备。 slave 表示应用程序看到的操作系统中的旧部分。 master 代表旧物理行的插件,现在它作为一个软件提供,让你编写一个能够对虚拟行进行输入/输出控制的应用程序/ em>并且表现得像真正的终端