curses
私たちはバックグラウンドで.basedアプリケーションを実行したいと思います。
これらのアプリケーションは、ログファイルやその他のコンテキスト端末接続をマッピングするためにcurses
内部的に使用される現在のポート名を使用して取得します。tty
curses
一部のテストでは、キーボードを読み取れないアプリケーションの入力を既知のpts
有効なキーボードにリダイレクトするだけです。したがって、これを行うためにtty(またはpseudo-tty)を予約したため、バックグラウンドで実行できます。
pts
ttyをエミュレートしたり、そのような自動実行目的を維持することは可能ですか?私たちはそれらを活性化するだけですcrontab
。
答え1
ツールセットの歴史
そのような最初のツールは、Daniel J. Bernsteinの「pty」パッケージで、Rich Salzが「Ginsuナイフ」と描写していました。 「pty」パッケージのバージョン4は1992年にリリースされましたcomp.sources.unix
(Volume 25、Issues 127-135)。 World Wide Webではまだ見つかります。 Paul Vixieは当時こう説明しました。
私は何と言うことができますか?切って、カチカチ切って、皿洗いし、犬散歩させることです。これは「ただ働きます」。言い換えれば、指示に従うと、髪を引っ張ったり、挽いたり、他の標準的な移植活動なしで機能するパッケージを入手したりすることができます。
Bernsteinは、後で「ptyget」パッケージを使用して1999年4月7日以前にそれを更新し、次のように発表しました。
私は新しいpseudo-ttyアロケータptygetを組み立てました。アルファ版はで利用可能です
ftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz
。参加するには、ptygetメーリングリストがあります。に空のメッセージを送信してください[email protected]
。私はptygetのインターフェースを最初からデザインしました。 ptyよりもモジュール化されています。デフォルトのptyインタフェースは3つの部分に分けられます。
ptyget
:新しいpseudo-ttyを割り当て、それを選択したプログラムに渡す小さな低レベルプログラム(パッケージ内の唯一のsetuidプログラム)ptyspawn
:擬似端末で子プロセスを実行し、子プロセスが終了するのを待って停止状況を観察するもう1つの小さなプログラムです。ptyio
:データを前後に移動するもう少し大きな別のプログラム古い "Ginsu"ナイフは
pty
"Ginsuptybandage
"と表記されていますptyget ptyio -t ptyspawn
。これはネットワークプログラムをpseudo-ttyに接続するために使用され、今では「Ginsu」とpty -d
表記されています。そしての同義語です。セッション管理機能を別々のパッケージに分割しました。ptyrun
ptyget ptyio ptyspawn
nobuf
ptyget ptyio -r ptyspawn -23x
別のパッケージは「sess」パッケージです。
ちなみに、「ptyget」は、出版された数少ないケースの1つであるBersteinのまだリリースされていない「リワークされた」ビルドシステムの初期バージョンを示すことで有名です。 dependon
それは明らかな信号ですredo-ifchange
。
利用可能なツールセット
Dru Nelsonは「pty」と「ptyget」のバージョン4をリリースしました。
Paul Jarcは、オペレーティングシステムが実際に提供しなくなった元のバージョンでオペレーティングシステム固有の擬似端末デバイスioctlを処理しようとするptygetの修正バージョンをリリースしました。
nosh ソースパッケージには、Laurent Bercot のツールと nosh パッケージの独自の疑似端末管理コマンドを使用する同様のタスクとptybandange
スクリプトが付属しています。ptyrun
execline
いくつかの例は次のとおりです。
ptybandage
AIXのJurjgen Oskamパスワードプロンプトの制御端末を明示的に開いて読み取るプログラムにこの文書の入力を提供します。
$ptybandage dsmadmc <<EOF>uit.txt ヨスカム パスワード クエリセッション クエリプロセス 辞める EOF
ptyrun
OpenBSDでAndy Bradfordを使用するAndy Bradforddaemontoolsと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ツールセット。ソフトウェア。
- ドリューネルソン。 ドリューDrew/pty4。 GitHub。
- ドリューネルソン。 ドリュードリュー/パティゲート。 GitHub。
- ローランベルコ。実装する。ソフトウェア。
- ジョナサンデボインポラード(2014)。 スナックバッグ。ソフトウェア。
- ジョナサン・デ・ボイン・ポラード(2012)。 はじめに
redo
。一般的な答え。 - フロート湖。
bgplgsh
。 8. OpenBSD のマニュアルページ。