我们想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
现在被拼写为“ Ginsuptybandage
”,它是“Ginsu”的同义词ptyget ptyio -t ptyspawn
;pty -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 源包附带了类似的工作ptybandange
和ptyrun
脚本,它们使用 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
进一步阅读
- 丹尼尔·伯恩斯坦 (1992-02-19)。 v25i127:伪 tty 设备的通用接口。 comp.sources.unix。 25(127)。
- 丹尼尔·伯恩斯坦 (1991-10-04)。 会话管理简介。伯恩斯坦在 TTY 上。 JdeBP。
- 保罗·雅尔克. 普蒂盖特。 Paul Jarc 的软件。
- 乔纳森·德博因·波拉德 (2016)。Daniel J. Bernstein 的 ptyget 工具集。软件。
- 德鲁·纳尔逊. 德鲁德鲁/pty4。 GitHub。
- 德鲁·纳尔逊. 德鲁德鲁/普蒂盖特。 GitHub。
- 洛朗·贝尔科特.执行。软件。
- 乔纳森·德博因·波拉德 (2014)。 小吃包。软件。
- 乔纳森·德·博因·波拉德 (2012)。 简介
redo
。常见答案。 - 雷克·弗洛特。
bgplgsh
。 8. OpenBSD 手册页。