に記載されているこのスタックオーバーフロースレッド各論理端末には「擬似端末」があり、そのうちの1つに書き込みます。
$ cat some-file.txt > /dev/ttys002
対応する端末ウィンドウにデータが表示されます。ターミナルウィンドウにファイルなどのAPIを提供するのはなぜですか?これに役立つユースケースはありますか?
ここでそのままコピーします。
擬似端末に限定されず、次の用途にも使用できます。/dev/tty*
しかも。
答え1
ほとんどのハードウェアデバイスはファイルに似たAPIを提供します。これは、オペレーティングシステムの設計とアプリケーションの設計をより簡単にするために行われます。オペレーティングシステムはファイルAPIのみを必要とし、別々のターミナルAPI、別々のディスクAPI、別々のサウンドAPIなどを必要としません。特定の種類のハードウェアに特有の機能を使用しないアプリケーションでは、通常のファイルにアクセスするかハードウェアデバイスにアクセスするかにかかわらず、ファイルAPIを使用できます。
多くのハードウェアには、特定のデバイスタイプに固有の機能があります。アプリケーションは次のようにしてこれらの関数を呼び出すことができます。I/W制御。一部のハードウェアは、単にバイトストリームを読み書きできないため、ファイルとして表示されません。たとえば、Linux はネットワーク インターフェイスが個々のバイトではなくパケットで動作するため、ネットワーク インターフェイスをデバイス ファイルとして公開しません。
歴史的に、端末はハードウェアデバイスでした。今日、ほとんどの端末はグラフィック環境やネットワークを介してエミュレータを介して提供されています。それにもかかわらず、カーネルにはどのプロセスがどの端末で実行されているかを追跡する特別な処理機能が含まれているため、疑似端末もハードウェアデバイスのように見えます。
すべてのUnixバリアントでは/dev/tty
「このプロセスの現在の端末」を意味します。つまり、プロセスがファイルを開くたびに、そのプロセスの制御端子)。これにより、標準入力および出力記述子がリダイレクトされても、プロセスは端末を介して対話できます。
各端末には、ハードウェア端末(たとえば、/dev/tty1
Linux/dev/tty2
のテキストモード仮想コンソールの場合、、...、または/dev/ttyS0
Linuxのシリアルポートの場合、...)、またはシミュレートされた端末(例:tty)のいずれかである関連デバイスファイルがあります。 。 pty, pseudoの略) -/dev/pts/NUMBER
プロセスがターミナルドライバまたはエミュレータとデータを交換するために使用されるLinuxのターミナル。
端末は、アプリケーションを実行してその出力を端末に表示できるファイルであるためです。コマンドラインからプログラムを実行すると、その出力はデフォルトで端末に送信されますが、それをファイルにリダイレクトできます。