Linux

替代“openvt”,但用於偽終端(pts)。存在嗎?

  • January 11, 2020

替代“openvt”…但對於偽終端(pts)…存在嗎?

Openvrt 只執行 tty…而不是 pts。

(範例:特定 pts 中的 lauch 命令和 shell pts 目的地的使用者)

Command <dev pts> <launch_command>

ptyrun 和 ptybandage

有很多現成的工具可以做的事情相當於openvt:打開一個新的偽終端並執行一個指定的命令,其標準 I/O 連接到該偽終端。

  • Daniel J. Bernstein 的原作ptyrunptybandage
  • My ptyrunand ptybandagebuild on nosh 工具集實用程序
  • zptyZ shell 中的擴展模組
% **tty ; ptybandage tty**
/dev/pts/5
/dev/pts/6
%

當然,不同之處在於,在偽終端的情況下,必須將一些程序附加到偽終端的主端才能實際使用 I/O*執行某些操作。*就伯恩斯坦的工具而言,這就是ptyio程序。 ptyrun並且ptybandage實際上是演變為ptygetptyioptyspawn程序的腳本。我的工具的情況與此類似,其中pty-run程序是內部 I/O 主力,與pty-get-tty和結合使用open-controlling-tty

這意味著如果想要更細粒度的操作,只需打開偽終端主端,然後鍊式載入一些東西來完成剩下的工作,可以呼叫pty-get-ttyptyget直接呼叫。

終端多路復用器

在終端多路復用器tmux和的情況下screen,當然有一些機制(它們是這些程序的一部分)來啟動一個新的(內部)終端並執行附加到它的命令。有關詳細資訊,請參閱這些程序的文件。

現有的偽終端

這些工具(ptyrun,ptybandage等)不做的是執行將它們附加到現有偽終端的命令。他們總是創造新鮮的。

幾乎不需要執行附加到現有偽終端的命令。但這是可以完成的。例如,可以使用我的工具集來完成。只需將TTY環境變數設置為現有偽終端的open-controlling-tty設備文件名,並通過工具呼叫命令。

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

當然,這會在不同的不相關的並發程序之間產生對終端的爭用,並讓人們痛苦地意識到工作控制 shell 正在為一個程序做多少工作。☺

另請注意,如果從屬端子程序退出,幾個 SSH 伺服器和終端仿真器將關閉主控端。

所有這些都不是什麼

最後,請注意,這些不是輸入填充機制,用於在現有偽終端上驅動現有互動式 shell,向其輸入發送命令。它們都將程序附加到(新的)偽終端。

但那也不openvt是。

進一步閱讀

引用自:https://unix.stackexchange.com/questions/561599