我觉得这很愚蠢(“只是RTFM!”),但我无法理解这个手册页。描述openpty()
的{{3}}:
openpty()
函数找到可用的伪终端并返回 amaster和aslave中主服务器和从服务器的文件描述符。如果 name不为NULL,从属名称返回名称。如果 termp不为NULL,slave的终端参数将被设置为 在termp中的值。如果winp不为NULL,则为slave的窗口大小 将设置为winp中的值。
这是什么意思?
我的猜测是openpty()
试图找到对应于进程树中较高位置的终端仿真器的伪终端(某些nth-parent,即运行该程序的终端仿真器,如果有的话) 。但是,文档听起来像openpty()
只是随意地从/dev/pts
中抓取一些内容。
此外,“可用”是什么意思?似乎“可用”在伪终端的上下文中具有多重含义(例如,内核将允许终端仿真器创建伪终端,可以读/写伪终端)。
答案 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>并且表现得像真正的终端。