提供された方法をテストして、/dev/tty と /dev/tty0 の違いを確認できます。質問。しかし、私はこれらのデバイスの実際の目的(例えば、使用されている状況)を知りたいと思います。
答え1
/dev/tty
現在のコントロールはttyですか?プロセス、実際にこの特殊ファイルを開くすべてのプロセスについて。仮想コンソールデバイスである必要はありません(/dev/tty
N)、そしてフーティ、シリアルポートなどの制御ttyが仮想コンソールではない場合、その疑似端末が実際にシステムコンソールに実装されていても、プロセスはコンソールデバイスと対話する必要はありません。たとえば、ローカルで実行されているXサーバーの下のターミナルエミュレータにあるシェルの場合、プログラムは次の対話型チェーンを形成します。
Unix シェル
⇕ /dev/pts/2
( /dev/tty
== そのプロセスの場合)
カーネル pty ドライバ
⇕ ターミナル/dev/ptmx
エミュレータ
⇕ X Window Protocol
X Server
⇕ /dev/tty7
( /dev/tty
== サーバーの場合)
システムコンソール
zxc↿⇂[_̈░░]
ユーザー
ユーザーモードプログラムの使用には以下が/dev/tty
含まれます。
- すべてのリダイレクトとパイプを無視し、制御端末に何かを書き込みます。
- ioctl() 生成 – tty_ioctl(4) を参照。
- たとえば、端末(TIOCNOTTY)から切り離します。
/dev/tty0
現在アクティブです(つまり、モニターに表示されます)。仮想コンソール~のオペレーティングシステム。この特定のファイルはシステムソフトウェアであまり使用されていませんが、/dev/console
実際には「別名」tty0
/dev/console
syslogデーモンと時々カーネル自体でよく使われます。
違いを確認するために試してみてください。 (++)またはターミナルエミュレータroot
でシェルを実行します。今tty3
CtrlAltF3
# sleep 2; echo test >/dev/tty
その後、素早くCtrl++AltしてF22秒待ってからCtrl++Altに戻ります。出力はどこで見るのですか?
これで同じテストを実行します/dev/tty0
。
答え2
/dev/tty はすべてのプロセスの制御 tty です。これはあなたの殻かもしれません。
プロセスが tty を制御しない場合、/dev/tty は使用できません。これはデーモンの場合でも同様です。
プロセスに制御ttyがある場合、/ dev / ttyはプロセスがstdin、stdout、またはstderrに使用する実際のttyドライバのドライバエイリアスです。
詳細についてはを参照してくださいman -s7d tty
。このマニュアルのセクションはオペレーティングシステムによって異なる可能性があるため、パート1のマニュアルページと混同しないでください。たとえば、確認してくださいman -k tty
。