1970年代にはハードウェア端末CUIがありました。
私のLinuxボックスには7つの端末エミュレータがあり、GUIは7番目の端末エミュレータ(Ctrl + Alt + F7)を占めています。
たとえば、これは私の最初の端末(Ctrl + Alt + F1)エミュレータです。
$ tty
/dev/tty0
>cat
ユーザースペースでEnterキーを押すと、cat
プロセスはファイルから入力をstdin
受け取るのを待ちます。どのエディタを使用してもファイルを見ること/dev/tty0
はできません。/dev/tty0
Processstdin
とその両方がファイルを処理しています。stdout
cat
/dev/tty0
質問:
一部のエディタを使用して/dev/tty0
ユーザースペースからこの端末ファイルにアクセスできますか?
ベストアンサー1
端末ファイルにアクセスしています。しかし、あなたが考えるものとは異なります。
ディスクファイルに書き込んでからそのファイルから読み込むと、読み取った内容が書き込んだ内容になります。端末などの特殊ファイルの場合は該当しません。ファイルは、書き込み可能な項目です。作成された内容と読み取った内容との間の接続は、ファイルの特性によって異なります。文字デバイスファイルの場合、通常、リンクはまったくありません。
端末ファイルは、異なる役割を果たす 2 つのオブジェクト、つまり端末自体とユーザーと対話するアプリケーションを関連付けます。ターミナルは、カーネルで表されるハードウェアまたはターミナルエミュレータ(プロセス)です。アプリケーションがデータを書き込むと、端末はデータの読み取りを開始します(通常は何らかの方法でそれをユーザーに表示します)。アプリケーションがデータを読み取ると、データは通常ユーザーが入力する端末から来ます。
あなたの場合、アプリケーションはShell、Cat、Editorなどです。エディタは端末からデータを読み取ろうとしますが、そうであれば入力を待ち、入力が終了するまで正しく反応することも、そうでない場合もあります。 (最初にCtrl + Dを押すとこれを行うことができます。)ライン転送信号の)。その後、端末から読んだ後、以前に持っていたものは提供されません。出力ターミナルに行きます。
コンソールの場合、端末に書き込まれたデータが画面に描画されます。 Linuxコンソールを使用すると、表示された/dev/tty1
テキストをデバイスから再読み込みできます。/dev/vcs1
表示可能な状態のままである限り(画面上の内容と後方にスクロールして使用できる内容のみを取得できます。後方にスクロールして到達できない内容は永遠に失われます)。
これはLinuxターミナルインタフェースで提供される機能です。端末は単にピクセルを描くだけで、テキストは忘れることができます。ほとんどの端末エミュレータは同様の機能を提供しません。
¹実際、ほとんどのファイルはこのようなものですが、すべてではありません。このディレクトリは通常のインタフェースを介して書き込むことができず、多くのUNIXバリアントでは読み取ることができません。一部のデバイスは読み取りまたは書き込みをサポートしていませんioctl
。