PTY

Section: Linux Programmer's Manual (7)
Updated: 2020-08-13
Index JM Home Page
 

名前

pty - 擬似端末インターフェース  

説明

擬似端末 (pseudoterminal; "pty" と略されることもある) は、 双方向通信チャンネルを提供する仮想キャラクターデバイスのペアである。 チャンネルの一方の端点は マスタ (master) と呼ばれ、もう一方の端点は スレーブ (slave) と呼ばれる。

擬似端末のスレーブは、伝統的な端末と全く同じ動作をするインターフェースを 提供する。端末に接続されることを想定しているプロセスは擬似端末の スレーブをオープンすることができ、それ以降はマスタ側をオープン しているプログラムからそのプロセスを制御することができる。 端末で入力されたのと同じように、 マスタ側に書き込まれた全てのデータは、スレーブ側のプロセスに送られる。 例えば、マスタデバイスに割り込みキャラクター (通常は control-C) を書き込むと、 スレーブに接続されているフォアグラウンドプロセスグループに対して 割り込みシグナル (SIGINT) が生成される。 反対に、擬似端末のスレーブ側に書き込まれた全てのデータは、 マスタ側に接続されているプロセスから読み出すことができる。

Data flow between master and slave is handled asynchronously, much like data flow with a physical terminal. Data written to the slave will be available at the master promptly, but may not be available immediately. Similarly, there may be a small processing delay between a write to the master, and the effect being visible at the slave.

歴史的に見ると BSD と System V の2種類の擬似端末の API が発展してきている。 SUSv1 は System V API に基づいた擬似端末 API を標準化しており、 擬似端末を使用する新しいプログラムはすべてこの API を採用すべきである。

Linux では BSD 風と (標準化された) System V 風の擬似端末を提供している。 System V 風の端末は、Linux システムでは一般に UNIX 98 擬似端末と呼ばれている。

カーネル 2.6.4 以降では、BSD 風の擬似端末は廃止予定とされている。この機能は、カーネル作成時に CONFIG_LEGACY_PTYS オプションを無効にすることで無効にできる (Linux 2.6.30 以降では、メインラインのカーネルでは、このオプションはデフォルトで無効になっている)。新しいアプリケーションでは、UNIX 98 擬似端末を使用すべきである。  

UNIX 98 擬似端末

未使用の UNIX 98 擬似端末マスタをオープンするには posix_openpt(3) を呼び出す (この関数はマスタクローンデバイス (master clone device), /dev/ptmx をオープンする; pts(4) を参照)。 プログラム固有の初期化処理を実行し、 grantpt(3) を使ってスレーブデバイスの所有権や許可を変更し、 unlockpt(3) を使ってスレーブのロック解除を行うと、 ptsname(3) が返す名前を渡して open(2) を呼び出すことにより 対応するスレーブデバイスをオープンできるようになる。

Linux カーネルでは、利用できる UNIX 98 擬似端末の数に上限を設けている。 2.6.3 以前のカーネルでは、この上限はカーネルのコンパイル時の設定 (CONFIG_UNIX98_PTYS) である。許可される擬似端末の数は最大 2048 であり、 デフォルトの設定は 256 である。 カーネル 2.6.4 以降では、この上限は /proc/sys/kernel/pty/max 経由で動的に調整可能となっている。また、 /proc/sys/kernel/pty/nr で現在使用中の擬似端末の数を取得できる。 この 2つのファイルの詳細は proc(5) を参照。  

BSD 擬似端末

BSD 風の擬似端末はあらかじめ作成されたペアとして提供される。その名前は /dev/ptyXY (マスタ側)、 /dev/ttyXY (スレーブ側) である。ここで、 X は [p-za-e] の 16文字のうちの一文字、 Y は [0-9a-f] の 16文字のうちの一文字である (X, Y に使われる文字の正確な範囲は UNIX の実装により異なる)。 例えば、 /dev/ptyp1 と /dev/ttyp1 は BSD 擬似端末ペアを構成する。 プロセスが未使用の擬似端末ペアを見つけるには、 各擬似端末のマスタの open(2) を試み、open が成功するまでこれを繰り返す。 マスタを open すると、対応する擬似端末のスレーブも open できるようになる (スレーブの名前は、マスタの名前の "pty" を "tty" に置き換えたものである)。  

ファイル

/dev/ptmx
UNIX 98 マスタクローンデバイス
/dev/pts/*
UNIX 98 スレーブデバイス
/dev/pty[p-za-e][0-9a-f]
BSD マスタデバイス
/dev/tty[p-za-e][0-9a-f]
BSD スレーブデバイス
 

注意

擬似端末は、ネットワークログインサービス (ssh(1), rlogin(1), telnet(1)) や 端末エミュレータ (xterm(1), script(1), screen(1), tmux(1), unbuffer(1), expect(1) など) のアプリケーションで使用されている。

パケットモード操作の制御を行う TIOCPKT ioctl(2) の説明は ioctl_tty(2) に書かれている。

BSD ioctl(2) の TIOCSTOP, TIOCSTART, TIOCUCNTL, TIOCREMOTE はこれまでのところ Linux では実装されていない。  

関連項目

ioctl_tty(2), select(2), setsid(2), forkpty(3), openpty(3), termios(3), pts(4), tty(4)  

この文書について

この man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。

関連キーワード

端末   擬似   スレーブ   マスタ   デバイス   カーネル   master   オープン   提供   ペア   slave   System   接続   無効   上限   kernel   インターフェース   チャンネル   キャラクター   一方   端点   制御   flow   between   available

Linux マニュアル 一覧

関連するコマンド・関数

ptmx.4   pts.4   unlockpt.3   grantpt.3   ptsname.3   ptsname_r.3
 

Index

名前
説明
UNIX 98 擬似端末
BSD 擬似端末
ファイル
注意
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:38:53 GMT, October 11, 2026