PTY(4) — UNIX Programmer’s Manual
名前
pty − 擬似端末ドライバ
形式
pseudo-device pty [ count ]
解説
pty ドライバは、擬似端末 (pseudo terminal) と呼ばれるデバイスペアをサポートするものです。擬似端末はマスター (master) デバイスとスレーブ (slave) デバイスという 2 つのキャラクタデバイスのペアです。スレーブデバイスは、 tty(4) で記述されているようなインタフェースをプロセスに提供します。しかし、 tty(4) に記述されているインタフェースを持つ他のすべてのデバイスの 背後には何らかの形でハードウェアデバイスがあるのに対して、 このスレーブデバイスの場合は擬似端末のマスターデバイス側に別のプロセスがあり、 このプロセスがスレーブデバイスを操作します。 つまり、マスターデバイス上に書かれたデータはスレーブデバイスの入力とされ、 スレーブデバイス上に書かれたデータはマスターデバイスの入力とされます。
システム構成時に、擬似端末数は count オプションとして指定され、 そのデフォルト値は 32 です。
次に示したものは、擬似端末特有の ioctl コールです。
TIOCSTOP
端末への出力を停止(^S とタイプするのと同じ)。パラメータ設定の必要なし。
TIOCSTART
出力を再開(TIOCSTOP や ^S で停止していたもの)。パラメータ設定の必要なし。
TIOCPKT
パケット モードのオン/オフ。 パケットモードは、0 でない変数のアドレスをパラメータとして指定 した時にオン、0 の時オフです。 この ioctl がマスターデバイス側に対して用いられると、 以降の端末からの read は、スレーブ側に書かれたデータを返します。 このデータは、内容が 0 の 1バイト(TIOCPKT_DATA という記号で表される)が 先頭についたものか、または、コントロールステータス情報を表す 1バイトです。 後者の場合、そのバイトは、以下のビットの論理和です。
TIOCPKT_FLUSHREAD
read キューがフラッシュされた時。
TIOCPKT_FLUSHWRITE
write キューがフラッシュされた時。
TIOCPKT_STOP
出力が ^S で停止した時。
TIOCPKT_START
出力が(^Qで)再開した時。
TIOCPKT_DOSTOP
t_stopc が ^S であり、 t_startc が ^Q である時。
TIOCPKT_NOSTOP
開始と停止の文字が ^S や ^Q でない時。
このモードが使用されている場合、 マスター側のコントロールステータス情報は、 select の例外条件で検出できます。 このモードは、リモートエコーや、ローカルに ^S/^Q のフロー制御を行う リモートログインを出力の適切なバックフラッシングを使って実現するために、 rlogin(1C) や rlogind(8C) で使用されます。また、他の同様なプログラムでも使うことができます。
TIOCUCNTL
少数の単純な ioctl コマンドを、パケットモードと似たプロトコルを使って、 スレーブ側からマスター側に擬似端末を通して渡すモードのオン/オフ。 TIOCUCNTL と TIOCPKT は、相互に排他的です。 このモードがオンになるのは、マスター側で 0 でない変数のアドレスを パラメータとして指定した時です。 0 の時はオフです。以降にマスター側から読み出されるデータは、 スレーブ側に書かれたデータに内容が 0 である 1バイトが先頭に付いたものか、 スレーブ上で行われたユーザコントロール操作を反映した 1バイトです。 ユーザコントロールコマンドは、データのない特別な ioctl コマンドからなり、そのコマンドは UIOCCMD( n ) として与えられます。 n は、1−255 までの範囲です。 この操作の値 n は、マスター側で次に read した時に受け取る 1バイト(値が n)となります。 ioctl UIOCCMD(0) は、no-op でこの機能の存在を 確認するために使ってもよいものです。 この TIOCPKT モードと同様に、このコマンド操作は select によって、例外発生として検出することができます。
TIOCREMOTE
擬似端末のマスター側のモードで、TIOCPKT からは独立しています。 このモードでは、擬似端末への入力が(端末のモードとは関係なく) フロー制御されますが、行編集はされないようになります。 制御ターミナルへの書き込みは、 そのターミナルを読み込んでいるプロセスに対してレコード境界を作り出します。 通常の使用では、1 回のデータの書き込みは、 その端末上で一行をタイプした時のデータのようになります。 0 バイトの write は、エンドオブファイル文字をタイプしたことになります。 TIOCREMOTE は、ウィンドウマネジャでリモートに行編集を行う時、 およびフロー制御された入力が必要な時にはいつでも使用できます。
関連ファイル
/dev/pty[p−r][0−9a−f] マスター擬似端末
/dev/tty[p−r][0−9a−f] スレーブ擬似端末
診断
なし
バグ
EOT の送信はできません。
NEWS-OSRelease 3.3