私はプログラムがどのようにI / Oを好みscreen
制御するかを理解しようとしています。script
端末、ttyなどに関する私の知識は読書から来ています。「ティーオープン」記事と私が見つけることができるすべてのSEの答え。私が理解したのは、コンポーネント間の相互作用は次のとおりです。
Console(Keyboard+Screen) ---- xterm(pty master) ----- tty line discipline ---- bash/other programs(pty slave)
行ルールがカーネルにある場合、xtermとbashはユーザースペースで実行されます。
- そうですか?
さて、次のプログラムについて考えてみるとscreen
、script
、彼らはユーザースペースプログラムです端末で実行(既存のxterm)ですが、他のプログラムでI / Oを制御できます。この記事では、xterm内で別の擬似端末(既存の擬似端末)を実行しているためです。
これは、新しいマスターとスレーブのペアを作成し、
pty
この新しいペアのマスターを制御し、ここで開始されたすべてのプロセスがpty
新しいスレーブで実行されることを意味しますか?たとえば、新しい「画面」を起動してコマンドを実行するたびに、tty
同じように実行され/dev/pts/x
ますか?script
最後に、誰かがそれについての詳細を得ることができる記事/本を教えてもらえますか(まだ見つかりません)。
私も参考にしたいです。これ答えは短いですが。
答え1
①はい、xtermとbashはユーザースペースで実行されます。画面やスクリプトも同様です。
②はい、そうです。 Screenは基本的にXTermと同様に端末エミュレータです。もちろん、XTermはX11サーバーにコマンドを出力してターミナルを表示し、画面は他のターミナル(ターミナルエミュレータまたは実際のターミナルかもしれません)に制御シーケンスとテキストを出力します。
③おそらく、このプログラムがどのように機能するかについての最も詳細な情報はソースコードです。もちろん、ここや次のサイトで質問することができます。スタックオーバーフロー。