1. ホーム
  2. unix

[解決済み] dev/ttyは何が特別なのですか?[クローズド]

2022-03-13 17:12:03

質問

ls -la /dev/tty は出力を示しています。

crw-rw-rw- 1 root tty 5, 0 Dec 14 22:21 /dev/tty

冒頭のcはどういう意味ですか?以下のような場合 pwd > /dev/tty が標準出力に印刷されます。ファイル /dev/tty には何が入っていますか?

解決方法は?

ttyは、現在のプロセスの「制御端末」を表す特殊なファイルです。

キャラクタデバイス

Unix は「デバイスファイル」をサポートしています。これは実際のファイルではなく、ハードウェアデバイスへのファイルのようなアクセスポイントです。 キャラクタ」デバイスとは、(バッファード IO とは対照的に) バイト単位でインタフェースされるデバイスのことです。

TTY

/dev/tty は特殊なファイルで、現在のプロセスの端末を表します。そのため echo 1 > /dev/tty というメッセージ('1')が画面に表示されます。同様に cat /dev/tty を押すと、その後の入力が重複して行われます(Ctrl-Cを押すまで)。

/dev/tty はそのように何かを「含む」わけではありませんが、そこから読んだり、書き込んだりすることができます(それだけの価値があります)。あまり良い使い道は思いつきませんが、単純な IO 操作には非常に便利な類似のファイルがあります (例. /dev/ttyS0 は通常シリアルポートです)

この引用は http://tldp.org/HOWTO/Text-Terminal-HOWTO-7.html#ss7.3 :

/dev/tty は現在の制御端末(ある場合)を表します。 プロセスです。 どの tty がどのプロセスにアタッチされているかを調べるには シェルプロンプト(コマンドライン)で "ps -a" コマンドを実行します。その際 tty"の欄です。今いるシェルプロセスでは、/dev/tty が 今使っている端末 シェルのプロンプトで "tty" と入力すると、その端末が何であるかを確認できます。 です(マニュアル pg. tty(1) 参照)。/dev/tty は、以下のリンクのようなものです。 実際の端末のデバイス名に、さらに Cプログラマは、マニュアルページのtty(4)を参照してください。

以下は、そのマニュアルページです。 http://linux.die.net/man/4/tty