ptyrun 和 ptybandage

ptyrun 和 ptybandage

“openvt”的替代品...但对于伪终端(pts)...存在吗?

Openvrt 只能操作 tty...但不能操作 pts。

(示例:特定 pts 中的 lauch 命令以及 shell pts 目标的用户)

Command <dev pts> <launch_command>

答案1

ptyrun 和 ptybandage

有很多现成的工具可以执行相当于以下操作openvt:打开一个新的伪终端并运行指定的命令,并将其标准 I/O 连接到该伪终端。

  • 丹尼尔·J·伯恩斯坦 (Daniel J. Bernstein) 的原创作品ptyrunptybandage
  • 我的ptyrunptybandage基于 nosh 工具集实用程序构建的
  • zptyZ shell 中的扩展模块
%蒂;绷带 tty
/dev/pts/5
/dev/pts/6
%

当然,不同之处在于,在伪终端的情况下,必须有一些进程附加到伪终端的主端才能真正进行操作。与 I/O 相关的东西。就伯恩斯坦的工具而言,这就是程序ptyioptyrunptybandage实际上是转变成ptygetptyioptyspawn程序的脚本。我的工具的情况类似,其中pty-run程序是内部 I/O 主力,与pty-get-tty和相结合open-controlling-tty

也就是说,如果想要更细粒度的操作,只需打开伪终端master端,然后链式加载即可某物要完成其余的工作,可以直接调用pty-get-ttyptyget

终端多路复用器

对于终端多路复用器tmuxscreen,当然有一些机制(这些程序的一部分)用于启动新的(内部)终端并运行附加到它的命令。有关详细信息,请参阅这些程序的 doco。

现有的伪终端

这些工具(ptyrun、、ptybandage等)的用途不是执行的操作是运行将它们附加到的命令现存的伪终端。他们总是创造新鲜的。

很少需要运行附加到现有伪终端的命令。但这是可以完成的。例如,可以使用我的工具集来完成。只需将TTY环境变量设置为从属端现有伪终端的设备文件名,并通过open-controlling-tty工具调用命令。

TTY=/dev/pts/5 open-controlling-tty $SHELL

当然,这会在不同的不相关的并发进程之间产生对终端的争用,并且让人痛苦地意识到作业控制 shell 为一个进程做了多少工作。 ☺

另请注意,如果出现以下情况,多个 SSH 服务器和终端仿真器将关闭主端:他们的从机端子进程退出。

这些都不是什么

最后,请注意,这些不是输入填充机制,用于在现有伪终端上驱动现有交互式 shell,向其输入发送命令。他们都附有新的处理到(新的)伪终端。

但事实openvt也并非如此。

进一步阅读

相关内容