.\" Copyright (C) 2005 Michael Kerrisk .\" .\" %%%LICENSE_START(VERBATIM) .\" Permission is granted to make and distribute verbatim copies of this .\" manual provided the copyright notice and this permission notice are .\" preserved on all copies. .\" .\" Permission is granted to copy and distribute modified versions of this .\" manual under the conditions for verbatim copying, provided that the .\" entire resulting derived work is distributed under the terms of a .\" permission notice identical to this one. .\" .\" Since the Linux kernel and libraries are constantly changing, this .\" manual page may be incorrect or out-of-date. The author(s) assume no .\" responsibility for errors or omissions, or for damages resulting from .\" the use of the information contained herein. The author(s) may not .\" have taken the same level of care in the production of this manual, .\" which is licensed free of charge, as they might when working .\" professionally. .\" .\" Formatted or processed versions of this manual, if unaccompanied by .\" the source, must acknowledge the copyright and authors of this work. .\" %%%LICENSE_END .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2005 Akihiro MOTOKI all rights reserved. .\" Translated 2005-10-14, Akihiro MOTOKI .\" .TH PTY 7 2005\-10\-10 Linux "Linux Programmer's Manual" .SH 名前 pty \- 擬似端末インターフェース .SH 説明 擬似端末 (pseudoterminal; "pty" と略されることもある) は、 双方向通信チャンネルを提供する仮想キャラクターデバイスのペアである。 チャンネルの一方の端点は \fIマスタ (master)\fP と呼ばれ、もう一方の端点は \fIスレーブ (slave)\fP と呼ばれる。 擬似端末のスレーブは、伝統的な端末と全く同じ動作をするインターフェースを 提供する。端末に接続されることを想定しているプロセスは擬似端末の スレーブをオープンすることができ、それ以降はマスタ側をオープン しているプログラムからそのプロセスを制御することができる。 端末で入力されたのと同じように、 マスタ側に書き込まれた全てのデータは、スレーブ側のプロセスに送られる。 例えば、マスタデバイスに割り込みキャラクター (通常は control\-C) を書き込むと、 スレーブに接続されているフォアグラウンドプロセスグループに対して 割り込みシグナル (\fBSIGINT\fP) が生成される。 反対に、擬似端末のスレーブ側に書き込まれた全てのデータは、 マスタ側に接続されているプロセスから読み出すことができる。 擬似端末は、ネットワークログインサービス (\fBssh\fP(1), \fBrlogin\fP(1), \fBtelnet\fP(1)) や端末エミュレータ、 \fBscript\fP(1), \fBscreen\fP(1), \fBexpect\fP(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 擬似端末を使用すべきである。 .SS "UNIX 98 擬似端末" 未使用の UNIX 98 擬似端末マスタをオープンするには \fBposix_openpt\fP(3) を呼び出す (この関数はマスタクローンデバイス (master clone device), \fI/dev/ptmx\fP をオープンする; \fBpts\fP(4) を参照)。 プログラム固有の初期化処理を実行し、 \fBgrantpt\fP(3) を使ってスレーブデバイスの所有権や許可を変更し、 \fBunlockpt\fP(3) を使ってスレーブのロック解除を行うと、 \fBptsname\fP(3) が返す名前を渡して \fBopen\fP(2) を呼び出すことにより 対応するスレーブデバイスをオープンできるようになる。 Linux カーネルでは、利用できる UNIX 98 擬似端末の数に上限を設けている。 2.6.3 以前のカーネルでは、この上限はカーネルのコンパイル時の設定 (\fBCONFIG_UNIX98_PTYS\fP) である。許可される擬似端末の数は最大 2048 であり、 デフォルトの設定は 256 である。 カーネル 2.6.4 以降では、この上限は \fI/proc/sys/kernel/pty/max\fP 経由で動的に調整可能となっている。また、 \fI/proc/sys/kernel/pty/nr\fP で現在使用中の擬似端末の数を取得できる。 この 2つのファイルの詳細は \fBproc\fP(5) を参照。 .SS "BSD 擬似端末" BSD 風の擬似端末はあらかじめ作成されたペアとして提供される。その名前は \fI/dev/ptyXY\fP (マスタ側)、 \fI/dev/ttyXY\fP (スレーブ側) である。ここで、 X は [p\-za\-e] の 16文字のうちの一文字、 Y は [0\-9a\-f] の 16文字のうちの一文字である (X, Y に使われる文字の正確な範囲は UNIX の実装により異なる)。 例えば、 \fI/dev/ptyp1\fP と \fI/dev/ttyp1\fP は BSD 擬似端末ペアを構成する。 プロセスが未使用の擬似端末ペアを見つけるには、 各擬似端末のマスタの \fBopen\fP(2) を試み、open が成功するまでこれを繰り返す。 マスタを open すると、対応する擬似端末のスレーブも open できるようになる (スレーブの名前は、マスタの名前の "pty" を "tty" に置き換えたものである)。 .SH ファイル \fI/dev/ptmx\fP (UNIX 98 マスタクローンデバイス) .br \fI/dev/pts/*\fP (UNIX 98 スレーブデバイス) .br \fI/dev/pty[p\-za\-e][0\-9a\-f]\fP (BSD マスタデバイス) .br \fI/dev/tty[p\-za\-e][0\-9a\-f]\fP (BSD スレーブデバイス) .SH 注意 パケットモード操作の制御を行う \fBTIOCPKT\fP \fBioctl\fP(2) の説明は \fBtty_ioctl\fP(4) に書かれている。 BSD \fBioctl\fP(2) の \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP, \fBTIOCREMOTE\fP はこれまでのところ Linux では実装されていない。 .SH 関連項目 \fBselect\fP(2), \fBsetsid\fP(2), \fBforkpty\fP(3), \fBopenpty\fP(3), \fBtermios\fP(3), \fBpts\fP(4), \fBtty\fP(4), \fBtty_ioctl\fP(4) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.79 の一部 である。プロジェクトの説明とバグ報告に関する情報は http://www.kernel.org/doc/man\-pages/ に書かれている。