私の知る限り、/dev/pts
ファイルはsshまたはtelnetセッション用に作成されます。
承認された回答:
/dev/pts
には何も保存されません 。このファイルシステムは純粋にメモリ内にあります。
/dev/pts
のエントリ 疑似端末です(略してpty)。 Unixカーネルには、端末の一般的な概念があります。端末は、アプリケーションが出力を表示し、端末デバイスを介して入力を受信する方法を提供します。プロセスには制御端末がある場合があります —テキストモードアプリケーションの場合、これがユーザーとのやり取りの方法です。
端末は、ハードウェア端末(「tty」、「teletype」の略)または疑似端末(「pty」)のいずれかです。ハードウェア端末は、シリアルポート(ttyS0
)などのインターフェイスを介して接続されます 、…)またはUSB(ttyUSB0
、…)またはPC画面とキーボード(tty1
、…)。擬似端末は、アプリケーションである端末エミュレーターによって提供されます。疑似端末の種類には次のものがあります。
- xterm、gnome-terminal、konsoleなどのGUIアプリケーションは、キーボードとマウスのイベントをテキスト入力に変換し、出力を一部のフォントでグラフィカルに表示します。
- 画面やtmuxなどのマルチプレクサアプリケーションは、別の端末との間で入力と出力を中継し、テキストモードアプリケーションを実際の端末から切り離します。
- sshd、telnetd、rlogindなどのリモートシェルアプリケーションは、クライアントのリモート端末とサーバーのptyの間で入力と出力を中継します。
プログラムが書き込み用の端末を開くと、そのプログラムからの出力が端末に表示されます。複数のプログラムを同時に端末に出力するのが一般的ですが、出力のどの部分がどのプログラムからのものであるかを判断する方法がないため、混乱する場合があります。制御端末に書き込もうとするバックグラウンドプロセスは、SIGTTOU信号によって自動的に中断される場合があります。
プログラムが読み取り用の端末を開くと、ユーザーからの入力がそのプログラムに渡されます。複数のプログラムが同じ端末から読み取っている場合、各文字は独立してプログラムの1つにルーティングされます。これはお勧めしません。通常、特定の時間に端末からアクティブに読み取るプログラムは1つだけです。フォアグラウンドにないときに制御端末から読み取ろうとするプログラムは、SIGTTIN信号によって自動的に中断されます。
実験するには、tty
を実行します 端末で端末デバイスが何であるかを確認します。 /dev/pts/42
だとしましょう 。別の端末のシェルで、echo hello >/dev/pts/42
を実行します :文字列hello
もう一方の端末に表示されます。次に、cat /dev/pts/42
を実行します もう一方の端末に入力します。そのcat
を殺すには コマンド(他の端末を使いにくくします)、 Ctrlを押します + C 。
別の端末への書き込みは、通知を表示するのに役立つ場合があります。たとえば、write
コマンドはそれを行います。通常、別の端末からの読み取りは行われません。