vincenzogianfelice Asked: 2020-01-12 08:09:07 +0800 CST2020-01-12 08:09:07 +0800 CST 2020-01-12 08:09:07 +0800 CST 替代“openvt”,但用于伪终端(pts)。存在吗? 772 替代“openvt”...但对于伪终端(pts)...存在吗? Openvrt 只运行 tty...而不是 pts。 (示例:特定 pts 中的 lauch 命令和 shell pts 目的地的用户) Command <dev pts> <launch_command> linux bash 1 个回答 Voted Best Answer JdeBP 2020-01-12T12:08:48+08:002020-01-12T12:08:48+08:00 ptyrun 和 ptybandage 有很多现成的工具可以做的事情相当于openvt:打开一个新的伪终端并运行一个指定的命令,其标准 I/O 连接到该伪终端。 Daniel J. Bernstein 的原作ptyrun和ptybandage My ptyrunand ptybandagebuild on nosh 工具集实用程序 zptyZ shell 中的扩展模块 % tty ; ptybandage tty /dev/pts/5 /dev/pts/6 % 当然,不同之处在于,在伪终端的情况下,必须将一些进程附加到伪终端的主端才能实际使用 I/O执行某些操作。就伯恩斯坦的工具而言,这就是ptyio程序。 ptyrun并且ptybandage实际上是演变为ptyget、ptyio和ptyspawn程序的脚本。我的工具的情况与此类似,其中pty-run程序是内部 I/O 主力,与pty-get-tty和结合使用open-controlling-tty。 这意味着如果想要更细粒度的操作,只需打开伪终端主端,然后链式加载一些东西来完成剩下的工作,可以调用pty-get-tty或ptyget直接调用。 终端多路复用器 在终端多路复用器tmux和的情况下screen,当然有一些机制(它们是这些程序的一部分)来启动一个新的(内部)终端并运行附加到它的命令。有关详细信息,请参阅这些程序的文档。 现有的伪终端 这些工具(ptyrun,ptybandage等)不做的是运行将它们附加到现有伪终端的命令。他们总是创造新鲜的。 几乎不需要运行附加到现有伪终端的命令。但这是可以完成的。例如,可以使用我的工具集来完成。只需将TTY环境变量设置为现有伪终端的从open-controlling-tty设备文件名,并通过工具调用命令。TTY=/dev/pts/5 open-controlling-tty $SHELL 当然,这会在不同的不相关的并发进程之间产生对终端的争用,并让人们痛苦地意识到工作控制 shell 正在为一个进程做多少工作。☺ 另请注意,如果从属端子进程退出,几个 SSH 服务器和终端仿真器将关闭主控端。 所有这些都不是什么 最后,请注意,这些不是输入填充机制,用于在现有伪终端上驱动现有交互式 shell,向其输入发送命令。它们都将新进程附加到(新的)伪终端。 但那也不openvt是。 进一步阅读 https://unix.stackexchange.com/a/249801/5132 丹尼尔 J. 伯恩斯坦 (1996)。ptyrun. djbwares。 丹尼尔 J. 伯恩斯坦 (1996)。ptybandage. djbwares。 丹尼尔 J. 伯恩斯坦 (1996)。ptyio. djbwares。 丹尼尔 J. 伯恩斯坦 (1996)。ptyget. djbwares。 乔纳森·德博因·波拉德 (2014)。ptyrun. 小吃指南。软件。 乔纳森·德博因·波拉德 (2014)。ptybandage. 小吃指南。软件。 乔纳森·德博因·波拉德 (2014)。pty-run. 小吃指南。软件。 乔纳森·德博因·波拉德 (2014)。pty-get-tty. 小吃指南。软件。 乔纳森·德博因·波拉德 (2014)。open-controlling-tty. 小吃指南。软件。 https://unix.stackexchange.com/a/470853/5132
ptyrun 和 ptybandage
有很多现成的工具可以做的事情相当于
openvt
:打开一个新的伪终端并运行一个指定的命令,其标准 I/O 连接到该伪终端。ptyrun
和ptybandage
ptyrun
andptybandage
build on nosh 工具集实用程序zpty
Z shell 中的扩展模块当然,不同之处在于,在伪终端的情况下,必须将一些进程附加到伪终端的主端才能实际使用 I/O执行某些操作。就伯恩斯坦的工具而言,这就是
ptyio
程序。ptyrun
并且ptybandage
实际上是演变为ptyget
、ptyio
和ptyspawn
程序的脚本。我的工具的情况与此类似,其中pty-run
程序是内部 I/O 主力,与pty-get-tty
和结合使用open-controlling-tty
。这意味着如果想要更细粒度的操作,只需打开伪终端主端,然后链式加载一些东西来完成剩下的工作,可以调用
pty-get-tty
或ptyget
直接调用。终端多路复用器
在终端多路复用器
tmux
和的情况下screen
,当然有一些机制(它们是这些程序的一部分)来启动一个新的(内部)终端并运行附加到它的命令。有关详细信息,请参阅这些程序的文档。现有的伪终端
这些工具(
ptyrun
,ptybandage
等)不做的是运行将它们附加到现有伪终端的命令。他们总是创造新鲜的。几乎不需要运行附加到现有伪终端的命令。但这是可以完成的。例如,可以使用我的工具集来完成。只需将
TTY
环境变量设置为现有伪终端的从open-controlling-tty
设备文件名,并通过工具调用命令。当然,这会在不同的不相关的并发进程之间产生对终端的争用,并让人们痛苦地意识到工作控制 shell 正在为一个进程做多少工作。☺
另请注意,如果从属端子进程退出,几个 SSH 服务器和终端仿真器将关闭主控端。
所有这些都不是什么
最后,请注意,这些不是输入填充机制,用于在现有伪终端上驱动现有交互式 shell,向其输入发送命令。它们都将新进程附加到(新的)伪终端。
但那也不
openvt
是。进一步阅读
ptyrun
. djbwares。ptybandage
. djbwares。ptyio
. djbwares。ptyget
. djbwares。ptyrun
. 小吃指南。软件。ptybandage
. 小吃指南。软件。pty-run
. 小吃指南。软件。pty-get-tty
. 小吃指南。软件。open-controlling-tty
. 小吃指南。软件。