この質問から提供されたメソッドをテストすることで、/ dev / ttyと/ dev / tty0の違いを確認できます。しかし、私はそれらのデバイスの実際の使用法(それらが使用される状況など)について本当に疑問に思っています。
/dev/sda
を/dev/sda1
指定します(一方は偶然他方の一部です)。/dev/tty
一方、は、他の特定のttyに関連しない仮想デバイスです。
この質問から提供されたメソッドをテストすることで、/ dev / ttyと/ dev / tty0の違いを確認できます。しかし、私はそれらのデバイスの実際の使用法(それらが使用される状況など)について本当に疑問に思っています。
/dev/sda
を/dev/sda1
指定します(一方は偶然他方の一部です)。/dev/tty
一方、は、他の特定のttyに関連しない仮想デバイスです。
回答:
/dev/tty
この特殊ファイルを実際に開くすべてのプロセスの現在のプロセスの制御端末です。これは必ずしも仮想コンソールデバイス(/dev/tty
n)である必要はなく、pty、シリアルポートなど。制御するttyが仮想コンソールでない場合、そのpseudottyが実際にシステムコンソールに実装されていても、プロセスはコンソールデバイスと対話する必要はありません。例:ローカルで実行されているXサーバー下のターミナルエミュレーターのシェルの場合、プログラムは次のような一連の対話を形成します。
Unixシェル
⇕ /dev/pts/2
(/dev/tty
そのプロセスの))
カーネルptyドライバー
⇕ /dev/ptmx
端末エミュレーター
⇕Xウィンドウプロトコル
Xサーバー
⇕ /dev/tty7
(サーバーの≡ /dev/tty
)
システムコンソール
zxc↿⇂[_̈░░]
ユーザー
/dev/tty
ユーザーランドプログラムによる使用には以下が含まれます。
/dev/tty0
オペレーティングシステムの現在アクティブな(つまり、モニターに表示される)仮想コンソールです。この特別なファイルはシステムソフトウェアによって大幅に使用されることはほとんどありませんが、事実上「エイリアス」であり、syslogデーモン、および場合によってはカーネル自体によって多くの用途があります。/dev/console
tty0
/dev/console
違いを確認するための実験:(+ + )またはターミナルエミュレーターでroot
シェルを実行します。さてtty3
CtrlAltF3
# sleep 2; echo test >/dev/tty
その後すぐにCtrl+ Alt+ F2、2秒待ってからCtrl+ Alt+何でも戻ってください。出力はどこに表示されますか?
そして今のための同じテスト/dev/tty0
。
sshd
)内またはxterm
ウィンドウ内で実行されたプロセスは、固有の/ dev / tty nを持っていません 。疑似端末デバイスに接続されているため、システムコンソールのデバイスと相互作用しません。これは、/ dev / tty nがrootプロセスである場合、または同じユーザーがログオンしたtty nである場合に、 それを開くことを妨げるものではありません 。「特定のtty」に関するいくつかのポイントを回答に追加しようとしています。
/ dev / ttyは、任意のプロセスの制御ttyです。これはあなたの殻かもしれません。
プロセスに制御ttyがない場合、/ dev / ttyは使用できません。これは、たとえばデーモンに当てはまります。
プロセスに制御ttyがある場合、/ dev / ttyは、プロセスがstdin、stdout、またはstderrに使用している実際のttyドライバーのドライバーエイリアスです。
詳細についてはman -s7d tty
、を参照してください。このマニュアルが記載されているセクションは、OSによって異なる可能性があるため、セクション1のマニュアルページと混同しないでくださいman -k tty
。たとえば、を確認してください。