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

2024-01-11

我觉得问这个问题很愚蠢(“只是 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(使用前将#替换为@)

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

随机推荐

  • “gem update --system 在 Debian 上被禁用”错误

    当我尝试更新 ruby gems 通过运行 gem update system 时 出现此错误 ERROR While executing gem RuntimeError gem update system is disabled on
  • 每个目标都有不同的故事板本地化

    我有一个有 3 个目标的项目 每个目标只需要支持一种语言 但每个目标的语言都不相同 目前我有 目标 1 西 目标 2 西 目标 3 点 我的大部分字符串都在 Localized strings 文件中 我只是为每个目标指定一个不同的文件 然
  • Xamarin 表单中的轮播视图自动滑动

    我的页面底部有一个轮播视图 现在我希望图像每 2 秒自动滚动一次 我已经实现了相同的并且工作正常 Device StartTimer TimeSpan FromSeconds 2 gt SlidePosition if SlidePosit
  • 关于硬链接

    有人可以解释一下为什么内核不允许我们建立到目录的硬链接吗 无论是因为它打破了文件系统有向无环图结构的规则 还是因为其他原因 如果允许的话还会出现什么其他并发症 回到第 7 版 或版本 7 UNIX 时代 没有系统调用mkdir 2 and
  • 如何从具有字典列表的 json 将数据集加载到 pytorch torchtext.data.TabularDataset 中?

    我有一个字典列表如下 text The Fulton County Grand tags AT NP TL NN TL JJ TL text The jury further said tags AT NN RBR VBD 每个字典的每个值
  • 正则表达式查找一对周围数字不同的相邻数字

    我想找出是否有两个相邻的相同数字 并且这对数字前后的数字不同 例如 123456678 应该匹配 因为有一个双 6 1234566678 不应匹配 因为不存在具有不同周围数字的双精度数 12334566 应该匹配 因为有两个 3 到目前为止
  • 在 Gradle 构建脚本中访问 Teamcity 构建号

    如何在 Teamcity 执行的 Gradle 脚本中访问内部版本号和 VCS 结账号 在蚂蚁我可以使用 build number and build vcs number 1 分别 谢谢 这些只是 TeamCity 为 Ant Gradl
  • Java simpledateformat 英国时间

    我使用简单的日期格式来允许用户指定他们发送数据的时区 DateFormat df new SimpleDateFormat yyyy MM dd HH mm ss z 这工作正常 例如 df parse 2009 05 16 11 07 4
  • Inspired Lua程序在电脑和计算器上的不同

    I am attempting to create a simple quadratic formula program for my TI Nspire CX CAS I seem to have everything correct a
  • 如何向 JQuery 弹出窗口添加换行符

    如何在弹出窗口内容中添加换行符 换行符标记和换行符都不起作用 这就是我正在尝试的 foo hover function this popover title Bar content Line 1 br Line 2 n Line 3 pop
  • Flash逆向工程[关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 为什么我们不能一次从 System.in 读取一个字符?

    下面的程序打印标准输入上写入的每个字符 但仅在写入换行符后才打印 至少在我的系统上 public class Test public static void main String args throws java io IOExcepti
  • Spring Security如何在不登录的情况下更新用户详细信息

    我是 Spring Security 的新手 我已经实现了 UserDetails 来创建我自己的用户 我还有我的自定义 userDetailsS ervice 现在一切正常 但我需要在不登录的情况下更新有关我的用户的信息 如何做到这一点
  • WooCommerce REST API - 按修改日期过滤订单

    我正在使用 WooCommerce REST API http woocommerce github io woocommerce rest api docs introduction http woocommerce github io
  • 带有伪造霍夫曼表的 jpeg 可以恢复吗?

    我有一个在任何程序中都无法打开的 JPEG 在 Ubuntu 图像查看器中打开会产生 把照片传过去convert产生类似的结果 convert corrupt jpg out jpg convert im6 Bogus Huffman ta
  • 如何在 .NET 应用程序中使用 C++ 项目?

    我是一名普通的 NET 开发人员 旨在将 C 库集成到 NET 项目中 我有一些想法 但由于我总体上是 C 新手 所以我不知道我正在尝试使用的技术的局限性 C 项目本质上是一个快速声音渲染器 可以使用一堆不同的后处理技巧来播放多轨音频文件
  • self.tabBarController 为 NULL

    我创建了一个如下所示的 UITabBarController 并推送了一个 navigationController 但我现在无法设置选项卡栏项目的标题等 因为 tabbarcontroller 为 NULL 请你告诉我哪里出了问题 UIT
  • 为什么C语言不支持列主数组? [关闭]

    就目前情况而言 这个问题不太适合我们的问答形式 我们希望答案得到事实 参考资料或专业知识的支持 但这个问题可能会引发辩论 争论 民意调查或扩展讨论 如果您觉得这个问题可以改进并可能重新开放 访问帮助中心 help reopen questi
  • 查找 PHP 中最小的 int [关闭]

    这个问题不太可能对任何未来的访客有帮助 它只与一个较小的地理区域 一个特定的时间点或一个非常狭窄的情况相关 通常不适用于全世界的互联网受众 为了帮助使这个问题更广泛地适用 访问帮助中心 help reopen questions 我有 2
  • openpty() 的作用是什么? “openpty() 函数找到可用的伪终端”是什么意思?

    我觉得问这个问题很愚蠢 只是 RTFM 但我无法理解这个手册页 这手册页简介 http man7 org linux man pages man3 openpty 3 html描述openpty The openpty 函数找到可用的伪终端