この question から提供されたメソッドをテストすると、/ dev/ttyと/ dev/tty0の違いを確認できます。しかし、私はそれらのデバイスの実際の使用法(それらが使用される状況など)について本当に疑問に思います。
/dev/tty
は、現在このプロセスの制御ttyであり、この特別なファイルを実際に開くすべてのプロセスに使用されます。これは必ずしも仮想コンソールデバイス(/dev/tty
n)である必要はなく、 pty 、シリアルポートなど。制御するttyが仮想コンソールでない場合、そのpseudottyが実際にシステムコンソールに実装されていても、プロセスはコンソールデバイスと対話する必要はありません。例:ローカルで実行されているXサーバーの下のターミナルエミュレーターのシェルの場合、プログラムは次のような一連の対話を形成します。
Unixシェル
⇕/dev/pts/2
(そのプロセスには≡/dev/tty
)
カーネルptyドライバー
⇕/dev/ptmx
ターミナルエミュレータ
⇕X Windowプロトコル
Xサーバー
⇕/dev/tty7
(≡/dev/tty
for the server)
システムコンソール
zxc↿⇂[_̈░░]
ユーザー
ユーザーランドプログラムによる/dev/tty
の使用には以下が含まれます。
/dev/tty0
は現在アクティブです(つまり、モニターに表示されます) オペレーティングシステムの仮想コンソールオペレーティングシステム。この特別なファイルはシステムソフトウェアによって大幅に使用されることはほとんどありませんが、 /dev/console
は事実上tty0
の「エイリアス」であり、/dev/console
は多くの用途がありますsyslogデーモン、場合によってはカーネル自体によって。
違いを確認する実験:tty3
でroot
シェルを実行します(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
。