curses
ベースのアプリをバックグラウンドで実行したいと思います。
これらのアプリはcurses
を使用し、現在のtty
ポート名を取得して、ログファイルやその他のコンテキスト端末の関連付けをマッピングするために内部的に使用されます。
一部のテストでは、キーボードを読み取らないcurses
アプリからの入力を既知のpts
にリダイレクトするだけで機能しました。そのためにtty(または疑似tty)を予約しているので、バックグラウンドで実行できます。
Ttyをモックすることは可能ですか、またはそのようないくつかの自動実行目的のために予約されたpts
を持っていますか? crontab
を介してそれらを起動することは明白です。
この種のものの最も初期のツールは、ダニエルJ.バーンスタインの「pty」パッケージでした。リッチサルツはこれを「ギンスナイフ」と表現し、1990年代の変わり目にnethackで不正行為をするために書き戻しました(原文のまま)。 「pty」パッケージのバージョン4は、1992年にcomp.sources.unix
(25巻127から135号)に発行されました。それはまだワールドワイドウェブ上で見つけることができます。ポール・ヴィクシーは当時それを説明しました:
何と言えばいい?スライスし、さいの目に切り、皿を洗い、犬を散歩させます。それは「正しく機能する」ということです。つまり、指示に従うと、髪を引っ張ったり、歯を噛んだり、その他の標準的な移植作業を行うことなく、機能するパッケージを入手できます。
バーンスタインは後に、1999年4月7日以前に、「ptyget」パッケージでこれを更新しました。
新しい疑似ttyアロケーターptygetをまとめました。アルファ版は
ftp://koobera.math.uic.edu/pub/software/ptyget-0.50.tar.gz
にあります。 ptygetメーリングリストがあります。参加するには、空のメッセージを[email protected]
に送信します。 ptygetのインターフェースを一から設計しました。 ptyよりもはるかにモジュール化されています。基本的なptyインターフェイスは3つに分割されました。
ptyget
:新しい疑似ttyを割り当て、それを選択したプログラムに渡す、パッケージ内の唯一のsetuidプログラムである小さな低レベルプログラム。ptyspawn
:疑似ttyの下で子プロセスを実行し、終了するのを待って停止を監視する別の小さなプログラムptyio
:データを前後に移動する別のわずかに大きいプログラム古いギンスナイフ
pty
のスペルはptybandage
になりました。これは、ptyget ptyio -t ptyspawn
の同義語です。ネットワークプログラムを疑似ttyにアタッチするためのpty -d
は、ptyget ptyio ptyspawn
の同義語であるptyrun
のスペルになりました。nobuf
はptyget ptyio -r ptyspawn -23x
の同義語です。セッション管理機能を別のパッケージに分割しました。
その別のパッケージは「sess」パッケージでした。
ちなみに、「ptyget」は、Berstein独自の未公開の「redo」ビルドシステムの非常に初期のバージョンであり、公開された数少ないインスタンスの1つを例示していることで注目に値します。 dependon
はredo-ifchange
の明確な前兆です。
Dru Nelsonは、「pty」バージョン4と「ptyget」の両方を公開しています。
Paul Jarcは、オペレーティングシステムが実際には提供しなくなったオリジナルのオペレーティングシステム固有の疑似端末デバイスioctlを処理しようとするptygetの修正バージョンを公開しています。
Noshソースパッケージには、LaurentBercotのptybandange
ツールとnoshパッケージ独自の疑似端末管理コマンドを使用する同様のptyrun
およびexecline
スクリプトが付属しています。
AIXでptybandage
を使用するJurjgenOskam ヒアドキュメントからの入力を、明示的に開いて制御端末でパスワードを読み取るプログラムにフィードするプロンプト:
$ ptybandage dsmadmc << EOF> uit.txt joskam password クエリセッション クエリプロセス quit EOF
OpenBSDでptyrun
を使用しているAndyBradford daemontoolsとucspi-tcpの下でbgplgsh
インタラクティブルーター制御プログラムにネットワーク経由でアクセスできるようにし、ターミナル:
#!/ bin/sh exec 2>&1 exec envuidgid rviews tcpserver -vDRHl0 0 23 ptyrun/usr/bin/bgplgsh
redo
の紹介。頻繁に与えられる答え。bgplgsh
。 8.OpenBSDのマニュアルページ。