/dev/tty
現在の プロセス の制御 tty です 、この特別なファイルを実際に開くすべてのプロセスに対して。必ずしも仮想コンソール デバイス (/dev/tty
n )、そして pty、シリアルポートなどである可能性があります。制御 tty が仮想コンソールでない場合、その疑似 tty が実際にシステムコンソールに実装されていても、プロセスはコンソールデバイスと対話する必要はありません。例:ローカルで実行されている Xserver の下の端末エミュレーターのシェルの場合、上記のプログラムは次のような相互作用の連鎖を形成します:
Unix シェル
⇕ /dev/pts/2
(≡ /dev/tty
そのプロセスのため)
カーネル pty ドライバー
⇕ /dev/ptmx
端末エミュレータ
⇕ X Window プロトコル
X サーバー
⇕ /dev/tty7
(≡ /dev/tty
サーバー用)
システムコンソール
z × c ↿⇂[_̈░░]
ユーザー
/dev/tty
の使用 ユーザーランド プログラムには以下が含まれます:
- すべてのリダイレクトとパイプを無視して、制御端末に何かを書き込みます。
- ioctl() を作成します – tty_ioctl(4) を参照してください;
- たとえば、端末から切り離します (TIOCNOTTY)。
/dev/tty0
オペレーティング システムの現在アクティブな (つまり、モニターに表示されている) 仮想コンソールです。 .この特別なファイルは、システム ソフトウェアによって大幅に使用される可能性は低いですが、/dev/console
実質的に tty0
の「エイリアス」です と /dev/console
syslog デーモンによって、また場合によってはカーネル自体によって多く使用されます。
違いを示す実験:root
を実行します tty3
のシェル (Ctrl +Alt +F3 )または端末エミュレータで。今
# sleep 2; echo test >/dev/tty
次にすばやく Ctrl +Alt +F2 、2 秒待って、Ctrl +Alt +なんでも。出力はどこに表示されますか?
/dev/tty0
の同じテスト .
/dev/tty は、すべてのプロセスの制御 tty です。これがあなたのシェルかもしれません。
プロセスに制御 tty がない場合、/dev/tty は使用できません。はデーモンに当てはまります。
プロセスに制御 tty がある場合、/dev/tty は、プロセスが stdin、stdout、または stderr に使用している実際の tty ドライバーへのドライバー エイリアスです。
man -s7d tty
を参照 詳細については。このマニュアルが含まれるセクションは、OS によって異なる場合があるため、セクション 1 のマニュアル ページと混同しないでください。 man -k tty
.