pty
といくつかのオープンソース プロジェクトで多くの言及があることに気付きましたtty
が、誰かがそれらの意味とそれらの違いを教えてもらえますか?
5 に答える
「tty」はもともと「テレタイプ」を意味し、「pty」は「疑似テレタイプ」を意味します。
UNIX では、/dev/tty* は「テレタイプ」、つまり端末のように機能する任意のデバイスです。(テレタイプと呼ばれるのは、当時の端末用にテレタイプがあったためです。)
pty は pseudotty であり、そこで読み書きするプロセスの端末のように機能するが、別の何かによって管理されるデバイス エントリです。それらは (私が思い出したように) X Window や screen などで最初に登場しました。そこでは、端末のように機能するが、別のプログラムから使用できるものが必要でした。
tty は端末です (テレタイプの略です。元の端末は、出力にライン プリンターを使用し、入力にキーボードを使用していました!)。端末は、基本的に、入力と出力にテキストを使用する単なるユーザー インターフェイス デバイスです。
pty は疑似端末です。接続されたプログラムには端末のように見えるソフトウェア実装ですが、「実際の」端末と直接通信する代わりに、入力と出力を別のプログラムに転送します。
たとえば、マシンに SSH 接続して を実行するls
と、ls
コマンドはその出力を疑似端末に送信し、その反対側は SSH デーモンに接続されます。
tty: テレタイプ。通常、端末が接続されたコンピュータのシリアル ポートを指します。
pty: 疑似テレタイプ。カーネルは、xterm や screen などの端末をエミュレートするプログラムに接続された疑似シリアル ポートを提供しました。
システムにマウントされているファイル システムを表示するコマンド ライン引数を指定せずに mount コマンドを実行すると、次のような行が表示されます。 mode=620) これは、特殊なタイプのファイル システム devpts が /dev/pts にマウントされていることを示します。このファイル システムは、どのハードウェア デバイスにも関連付けられていません。 Linux カーネル。/proc ファイル システムに似ています。
/dev ディレクトリと同様に、/dev/pts にはデバイスに対応するエントリが含まれています。ただし、通常のディレクトリである /dev とは異なり、/dev/pts は Linux カーネルによって動的に作成される特別なディレクトリです。ディレクトリの内容は時間とともに変化し、実行中のシステムの状態を反映します。/dev/pts 内のエントリは、疑似端末 (または疑似 TTY または PTY) に対応します。
Linux は、新しい端末ウィンドウを開くたびに PTY を作成し、対応するエントリを /dev/pts に表示します。PTY デバイスは端末デバイスのように機能します。キーボードからの入力を受け入れ、そこで実行されるプログラムからのテキスト出力を表示します。 . PTY には番号が付けられており、PTY 番号は /dev/pts 内の対応するエントリの名前です。
たとえば、新しいターミナル ウィンドウの PTY 番号が 7 の場合、別のウィンドウから次のコマンドを呼び出します。 % echo 'I am a virtual di ' > /dev/pts/7 新しいターミナル ウィンドウに出力が表示されます。