web-dev-qa-db-ja.com

Linuxでの/ dev / ttyおよび/ dev / tty0の使用方法

この question から提供されたメソッドをテストすると、/ dev/ttyと/ dev/tty0の違いを確認できます。しかし、私はそれらのデバイスの実際の使用法(それらが使用される状況など)について本当に疑問に思います。

8
Ron Vince

/dev/ttyは、現在このプロセスの制御ttyであり、この特別なファイルを実際に開くすべてのプロセスに使用されます。これは必ずしも仮想コンソールデバイス(/dev/ttyn)である必要はなく、 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の使用には以下が含まれます。

  • すべてのリダイレクトとパイプを無視して、制御端末に何かを書き込みます。
  • Ioctl()を作成します。tty_ioctl(4)を参照してください。
  • たとえば、ターミナルから切り離します(TIOCNOTTY)。

/dev/tty0は現在アクティブです(つまり、モニターに表示されます) オペレーティングシステムの仮想コンソールオペレーティングシステム。この特別なファイルはシステムソフトウェアによって大幅に使用されることはほとんどありませんが、 /dev/consoleは事実上tty0 の「エイリアス」であり、/dev/consoleは多くの用途がありますsyslogデーモン、場合によってはカーネル自体によって。

違いを確認する実験:tty3rootシェルを実行します(Ctrl+Alt+F3)または端末エミュレータ内。今

# sleep 2; echo test >/dev/tty

その後すぐに Ctrl+Alt+F2、2秒間待機し、 Ctrl+Alt+何でも。出力はどこに表示されますか?
これで、/dev/tty0に対する同じテストが行​​われました。

16
Incnis Mrsi

/ dev/ttyは、任意のプロセスの制御ttyです。これはあなたのシェルかもしれません。

プロセスに制御ttyがない場合、/ dev/ttyは使用できません。デーモンに当てはまります。

プロセスに制御ttyがある場合、/ dev/ttyは、プロセスがstdin、stdout、またはstderrに使用している実際のttyドライバーのドライバーエイリアスです。

見る man -s7d tty 詳細については。このマニュアルのあるセクションは、OSによって異なる可能性があるため、セクション1のマニュアルページと混同しないでください。 man -k tty

2
schily