工具集的历史

工具集的历史

我们想curses在后台运行一些基于的应用程序。

这些应用程序使用curses并获取要在内部使用的当前tty端口名称来映射日志文件和其他上下文终端关联。

curses在某些测试中,只需将不读取键盘的应用程序的输入重定向到已知的pts、有效的。因此它们可以在后台执行,因为我为此保留了一个 tty(或伪 tty)。

是否可以模拟 tty,或者保留pts某些自动运行目的,例如那样?我们简单地通过启动它们crontab

答案1

工具集的历史

最早的此类工具是 Daniel J. Bernstein 的“pty”包,Rich Salz 将其描述为“Ginsu 刀”,他在 20 世纪 90 年代初写了这个包,以便在 nethack 上作弊(原文如此!)。 “pty”包的第 4 版于 1992 年发布comp.sources.unix(第 25 卷第 127 至 135 期)。它仍然可以在万维网上找到。 Paul Vixie 当时这样描述:

我能说什么?它切片、切丁、洗碗、遛狗。它“只是工作”,这意味着如果您按照说明进行操作,您将获得一个工作包,而无需任何拉扯头发或咬牙切齿或其他标准移植活动。

Bernstein 后来在 1999 年 4 月 7 日或之前更新了此内容,使用了“ptyget”包,他宣布:

我组装了一个新的伪 tty 分配器 ptyget。 alpha 版本位于ftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz.有一个 ptyget 邮件列表;要加入,请发送一条空消息至 [email protected]。我从头开始设计了 ptyget 的界面。它比 pty 更加模块化;基本的 pty 接口现在已分为三部分:

  • ptyget:一个微小的低级程序 - 包中唯一的 setuid 程序 - 分配一个新的伪 tty 并将其传递给您选择的程序
  • ptyspawn:另一个小程序,在伪终端下运行子进程,等待它退出并观察停止情况
  • ptyio:另一个稍微大一点的程序,可以来回移动数据

旧的“Ginsu”刀pty现在被拼写为“ Ginsu ptybandage”,它是“Ginsu”的同义词ptyget ptyio -t ptyspawnpty -d,用于将网络程序附加到伪 ttys,现在拼写为,它是;ptyrun的同义词。ptyget ptyio ptyspawn并且nobuf是 的同义词 ptyget ptyio -r ptyspawn -23x。我已将会话管理功能分成一个单独的包。

那个单独的包是“sess”包。

顺便说一句,“ptyget”因举例说明了 Berstein 自己从未发布的“重做”构建系统的一个非常早期的版本,也是为数不多的已发布实例之一而闻名。 dependon是一个明显的先兆redo-ifchange

可用的工具集

Dru Nelson 发布了“pty”版本 4 和“ptyget”。

Paul Jarc 发布了 ptyget 的固定版本,它试图处理操作系统实际上不再提供的原始版本中特定于操作系统的伪终端设备 ioctl。

nosh 源包附带了类似的工作ptybandangeptyrun脚本,它们使用 Laurent Bercot 的execline工具和 nosh 包自己的伪终端管理命令。

一些示例用途

Jurjgen Oskamptybandage在 AIX 上使用将此处文档的输入提供给显式打开并读取其控制终端以获取密码提示的程序:

$ ptybandage dsmadmc <<EOF >uit.txt
约斯卡姆
密码
查询会话
查询过程
辞职
EOF

安迪·布拉德福德使用ptyrun安迪·布拉德福德 (Andy Bradford)在 OpenBSD 上在 daemontools 和 ucspi-tcp 下,使bgplgsh交互式路由器控制程序可通过网络访问,同时使其认为正在与终端通信:

#!/bin/sh
执行2>&1
执行 envuidgid rviews tcpserver -vDRHl0 0 23 ptyrun /usr/bin/bgplgsh

进一步阅读

相关内容