Linuxの疑似端末(のPty)

「とは、Linuxのターミナル(TTY)」の記事我々は学んだ:私たちはしばしば、端末tty1-6と擬似端末へのターミナルと言います。一般に、Linuxシステムを使用するTty1-6場合は、直接キーボードとディスプレイ、またはvSphereコンソール仮想化方式を使用して同様に、擬似端末は、他の場合に使用される接続しました。この記事では、疑似端末の基本的な考え方を説明しています。この記事では、Ubuntuの18.04である環境の一部の使用方法を示します。

擬似端末

疑似端末(疑似ターミナル、時々PTYと呼ばれる)には、この文字の擬似端末マスタとスレーブ疑似端末デバイスを指します。PTS /ディレクトリ内の/ dev /ファイルに対応するスレーブ、及びメモリ内のマスタ・ファイル・ディスクリプタ(FD)として識別されます。擬似端末エミュレータが端末によって提供され、端末エミュレータがユーザモードで実行されるアプリケーションです。

マスター側はディスプレイ、スレーブ側CLIは仮想端末(コマンドラインインタフェース、コマンドラインインタフェース)プログラム上で実行されている、キーボードのエンドユーザーに近いです。Linuxの疑似ターミナルドライバは、端末をマスターするデータプログラムのスレーブ入力の前端に書き込まれる(キーボードなど)、プログラムは、転送データのためのマスター端末(表示ドライバ、等)にスレーブ端末が読み出される書き込みます。(インターネットからこの図では)次の図を参照してください。

私たちは、それは、端末エミュレーションソフトウェアの一種である、などGNOMEターミナルなどの端末のデスクトップアプリケーションを開きます。端末エミュレーション・ソフトウェアが実行されている場合、それは、開口/ DEVによって作成/ ptmx擬似端末マスタとスレーブのペアをファイルと実行するシェルのスレーブ側をみましょう。ユーザはバイトのストリームを生成し、マスターを書き込む端末エミュレーションソフトウェアのキーを押下すると、プロセスは、スレーブのシェルからの入力を読み取ることができ、シェルとそのサブルーチン、出力は、スレーブで書かれていますターミナルエミュレーションソフトウェアによってウィンドウに文字を印刷するための責任を負います。

擬似端末の利用シナリオ

疑似端末使用シナリオの3種類について:

  • xtermのような端末エミュレーション・ソフトウェアを、グラフィカル・ユーザ・インタフェースのキーボードとマウスイベント等GNOME端末は、入力されたテキストを変換し、グラフィカル出力を表示します
  • 疑似端末とリモートクライアントリモート・シェル・アプリケーション(例えば、sshd)がサーバー上の入力端子と出力端子との間の中継
  • そのような画面とtmuxのようマルチプレクサ・アプリケーション、。テキストモードアプリケーションは、実際の端末から切り離されるように、それらは、別の端末からの入出力を中継します

なぜLinuxは、この疑似端末のコンセプトを提示するには?コマンドラインシェルおよび他の手順は、モニタとキーボードデータから直接読み取ることができないのですか?
画面、およびリモートログインで複数の端末エミュレータを実行するには、本当にこの層疑似端末間で直接シェルを任せることはできません。大きなアイデアのオペレーティングシステムでは-仮想化の指導の下、複数の端末エミュレータは、リモートユーザは、複数の仮想端末が必要であるが割り当てられます。上記の図を使用してスレーブエンドシェルが仮想端末です。マスター側のエンドユーザーの対話型シミュレーション。それは、データ・ストリームが、また少しの端末に転送するだけでのように見えるので、それは、仮想端末と呼ばれています。

疑似端末の原則

文字のペアは、状態を実行しているユーザ装置の端末エミュレータは、基本的に疑似端末を作成されます。PTS /ディレクトリ内の/ dev /ファイルに対応するスレーブ、及びメモリ内のマスタ・ファイル・ディスクリプタ(FD)として識別されます。疑似端末の場合、焦点はそれと端末との間に本質的な違いであるユーザ空間で実行するように、端末エミュレーションソフトウェアで、次の図を参照してください。

/ dev / ptmxはキャラクタデバイスファイルはプロセスでは、/ dev / ptmxファイルを開いたとき、プロセスはまた、ポイント疑似端末のマスター(PTM)ファイルディスクリプタと/ devに作成した擬似端末のスレーブを取得します、です/ディレクトリ(PTSをPTS )装備。得られた各ファイル記述子は/ dev / ptmx文書は独立PTMで開くことによって、ファイル・ディスクリプタ内で独自の関連するPTS、ptmxを(メモリptmxオブジェクトと考えることができる)を有し、PTSを維持します対応読み取りの関係およびファイル記述子を書き込むには、対応するptmx PTSに転送されます。我々はlsofのコマンドによってptmxオープン・ファイル記述子を見ることができます:

$ sudoを lsofのは/ dev / ptmx

デフォルトIOプロセス

通常の状況下で、我々は、リモートコマンド実行、標準入力、標準出力と標準エラー出力処理によって接続されている方法は、擬似端末にバインドされます、次は簡単なデモプログラムは次のとおりです。

する#include <stdio.hに> 
する#include <unistd.h>
 int型のmain()
{ 
    のprintf(" PID:%Dを\ n " 、GETPID())。
    スリープ(200 ); 

    printf(" \ nを" );
    リターン 0 ; 
}

このコードは、ファイルmydemo.cに保存され、その後、プログラムをコンパイルして実行するには、次のコマンドを実行しています:

$ gccの -Wall mydemo.c - Oデモ
$。/デモ

PID自身のプロセスのデモ・プログラムの出力は、別のは今lsofコマンド実行ターミナルを開きます。

$ lsofの-p 17981

0Uプロセスは/ 2U(標準誤差)は、擬似端末は/ devに結合されている(STDIN)、1U(STDOUT)、見/ 0 PTSすることができます。

 

参考:
LinuxのTTY / PTS概要
ザ・TTYは詳解
疑似端末のPTSにmanページ
疑似端末PTY manページを

おすすめ

転載: www.cnblogs.com/sparkdev/p/11605804.html