我觉得问这个问题很愚蠢(“只是 RTFM!”),但我无法理解这个手册页。这手册页简介 http://man7.org/linux/man-pages/man3/openpty.3.html描述openpty()
:
The openpty()
函数找到可用的伪终端并返回
amaster 和 aslave 中主设备和从设备的文件描述符。如果
name 不为 NULL,从机的文件名在 name 中返回。如果
termp 不为 NULL,从机的终端参数将被设置为
termp 中的值。如果winp不为NULL,则从机的窗口大小
将被设置为 winp 中的值。
这是什么意思?
我的猜测是openpty()
尝试找到与进程树中较高位置的终端仿真器相对应的伪终端(某个第 n 个父级,即程序正在运行的终端仿真器,如果有的话)。然而,文档让它听起来像openpty()
只是随意地抓取一些东西/dev/pts
.
另外,这里的“可用”是什么意思?在伪终端的上下文中,“可用”似乎有多种含义(例如,内核将让终端仿真器创建伪终端,伪终端可以读取/写入)。
然而,文档让它听起来像 openpty() 只是任意抓取
/dev/pts 之外的东西。
就是这样。
另外,这里的“可用”是什么意思?好像“可用”已经
伪终端上下文中的多种含义(例如内核
会让终端模拟器创建一个伪终端,一个伪终端
可以读/写)。
可用简单地意味着当前未使用的通过另一个进程。
openpty() 函数找到可用的伪终端并返回
amaster 和 aslave 中主设备和从设备的文件描述符。如果
name 不为 NULL,从机的文件名在 name 中返回。如果
termp 不为 NULL,从机的终端参数将被设置为
termp 中的值。如果winp不为NULL,则从机的窗口大小
将被设置为 winp 中的值。
这是什么意思?
作为回报,您将收到操作伪项、其从属部分、其主部分及其文件名所需的所有数据。
伪项模拟真实终端通过实现终端输入/输出语义。它们在许多上下文中使用,以模拟连接的终端(例如,想想当您通过 ssh 登录到远程系统时会发生什么)或控制某些交互式程序(例如,设计一个必须在其中运行 shell 的 GUI 终端) )。
我觉得问这个很傻(“只是 RTFM!”)
当然不是这种情况,终端和会话管理是非常棘手的事情,一开始就很难处理。
- - -编辑 - - -
真实终端。它以前如何?在早期(不是很早,恐龙世界更可怕),为了连接到我们使用终端的系统,一个带有键盘的简单设备,一个屏幕(没有图形)和一些小硬件和软件来管理一条线路,已插入其中一台计算机的插头。因此,在操作系统中需要管理来自终端的所有输入/输出:在需要时将键入的字符回显到屏幕,缓冲输入/输出以便能够删除命令行上的字符等。该操作系统部分是通过终端驱动程序表示为设备,例如/dev/ttyXXX
。一台这样的物理设备,一台操作系统终端设备。
如今,这样的物理设备已经不存在了,除了在某些特殊情况下,例如服务器控制台(我的意思是直接连接到机器的设备!或者在启动时所有这些奇怪的消息以文本模式出现时的屏幕等)。我们现在通过许多不同的方式连接到操作系统virtual事物(今天的计算机世界是关于虚拟性),就像模拟物理终端行为的 GUI 终端一样。然后,旧物理线路的两端部分在伪终端中表示,伪终端分为两部分:主设备和从设备。这slave代表应用程序看到的操作系统中的旧部分。这master代表旧物理线路的插头,因此现在它作为软件提供,让您编写一个能够对其进行输入/输出控制的应用程序虚拟线并表现得像真实终端.
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)