PTY
Section: Linux Programmer's Manual (7)
Updated: 2005-10-10
Index
JM Home Page
roff page
名前
pty - 擬似端末インタフェース
説明
擬似端末 (pseudo-terminal) は、双方向通信チャンネルを提供する
仮想キャラクタデバイスのペアである。
チャンネルの一方の端点は
マスタ (master)
と呼ばれ、もう一方の端点は
スレーブ (slave)
と呼ばれる。
擬似端末のスレーブは、伝統的な端末と全く同じ動作をするインタフェースを
提供する。端末に接続されることを想定しているプロセスは擬似端末の
スレーブをオープンすることができ、それ以降はマスタ側をオープン
しているプログラムからそのプロセスを制御することができる。
端末で入力されたのと同じように、
マスタ側に書き込まれた全てのデータは、スレーブ側のプロセスに送られる。
例えば、マスタデバイスに割り込みキャラクタ (通常は control-C) を書き込むと、
スレーブに接続されているフォアグラウンド・プロセスグループに対して
割り込みシグナル
(SIGINT)
が生成される。
反対に、擬似端末のスレーブ側に書き込まれた全てのデータは、
マスタ側に接続されているプロセスから読み出すことができる。
擬似端末は、ネットワークログインサービス
(ssh(1), rlogin(1), telnet(1))
や端末エミュレータ、
script(1),
screen(1),
expect(1)
などのアプリケーションで使用されている。
歴史的に見ると BSD と System V の2種類の擬似端末の API が発展してきている。
SUSv1 は System V API に基づいた擬似端末 API を標準化しており、
擬似端末を使用する新しいプログラムはすべてこの API を採用すべきである。
Linux では BSD 風と (標準化された) System V 風の擬似端末を提供している。
System V 風の端末は、Linux システムでは一般に Unix 98 擬似端末と呼ばれている。
カーネル 2.6.4 以降では、BSD 風の擬似端末は廃止予定とみなされている
(カーネルのコンフィギュレーションで BSD 風の擬似端末を無効にすることができる)。
新しいアプリケーションでは、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 スレーブデバイス)
注意
パケット・モード操作の制御を行う
TIOCPKT
ioctl(2)
の説明は
tty_ioctl(4)
に書かれている。
BSD ioctl(2) の TIOCSTOP, TIOCSTART, TIOCUCNTL, TIOCREMOTE は
これまでのところ Linux では実装されていない。
関連項目
select(2),
setsid(2),
forkpty(3),
openpty(3),
termios(3),
pts(4),
tty(4),
tty_ioctl(4)
Index
- 名前
-
- 説明
-
- Unix 98 擬似端末
-
- BSD 擬似端末
-
- ファイル
-
- 注意
-
- 関連項目
-
This document was created by
man2html,
using the manual pages.
Time: 04:31:56 GMT, November 19, 2007