.\" Copyright (c) 1983, 1991, 1993 .\" The Regents of the University of California. All rights reserved. .\" .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. All advertising materials mentioning features or use of this software .\" must display the following acknowledgement: .\" This product includes software developed by the University of .\" California, Berkeley and its contributors. .\" 4. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" .\" @(#)pty.4 8.2 (Berkeley) 11/30/93 .\" %Id: pty.4,v 1.6 1998/01/02 19:22:51 alex Exp % .\" $FreeBSD$ .\" WORD: control status information 制御状態情報 [pty.4] .\" WORD: exceptional condition 例外条件 [pty.4] .\" WORD: record boundary レコード境界 [pty.4] .\" " .Dd November 30, 1993 .Dt PTY 4 .Os BSD 4.2 .Sh 名称 .Nm pty .Nd 疑似端末ドライバ .Sh 書式 .Cd "pseudo-device pty" Op Ar count .Sh 解説 .Nm pty ドライバは .Em 疑似端末 と呼ばれるデバイス対のサポートを提供します。 疑似端末とは、 .Em マスタ デバイスと .Em スレーブ デバイスという 一対のキャラクタ型デバイスです。 スレーブデバイスは、 .Xr tty 4 に記述されているものと同一のインタフェースをプロセスに提供します。 ただし、 .Xr tty 4 に記述されるインタフェースを提供するような他のデバイスはすべて、 根底に何らかのハードウェアデバイスを持つのに対し、 スレーブデバイスは疑似端末のマスタ側を通じて別のプロセスに操作されます。 つまり、マスタデバイスに書き込まれた内容は すべてスレーブデバイスへ入力として送られ、 スレーブデバイスに書き込まれた内容は すべてマスタデバイスへ入力として渡されます。 .Pp カーネル設定ファイル中の指定にオプションの .Ar count を与えると、その数だけ疑似端末の組が構成されます。 count のデフォルトは 32 です。 .Pp 次に挙げる .Xr ioctl 2 呼び出しは疑似端末にのみ適用できます: .Bl -tag -width TIOCREMOTE .It Dv TIOCSTOP 端末への出力を止めます (例えば .Ql ^S を押すように)。 パラメータは取りません。 .It Dv TIOCSTART ( .Dv TIOCSTOP か .Ql ^S を押すことで止められていた ) 出力を再開します。 パラメータは取りません。 .It Dv TIOCPKT .Em パケット モードを有効/無効にします。 パケットモードは非 0 のパラメータを指定 (参照渡し) すると有効になり、 0 を指定 (参照渡し) すると無効になります。 疑似端末のマスタ側に適用された場合、以後端末から .Xr read 2 を呼び出すと、1 個の 0 バイト (シンボル定義では .Dv TIOCPKT_DATA ) に続いて疑似端末のスレーブ側に書き込まれたデータが返されるか、 あるいは制御状態情報を表す単一バイトが返されるようになります。 後者の場合、返されるバイトは次のビットの 0 個以上の和 (OR) になります: .Bl -tag -width TIOCPKT_FLUSHWRITE .It Dv TIOCPKT_FLUSHREAD 端末の読み込みキューがフラッシュされたとき .It Dv TIOCPKT_FLUSHWRITE 端末の書き込みキューがフラッシュされたとき .It Dv TIOCPKT_STOP 端末への出力が .Ql ^S のようにして止められたとき .It Dv TIOCPKT_START 端末への出力が再開されたとき .It Dv TIOCPKT_DOSTOP .Em t_stopc が .Ql ^S で .Em t_startc が .Ql ^Q となったとき .It Dv TIOCPKT_NOSTOP START 文字、STOP 文字が .Ql ^S/^Q でなくなったとき .Pp このモードが有効な間、 マスタ側から読み込まれる制御状態情報の存在は .Xr select 2 で例外条件として検出できます。 .Pp .Xr rlogin 1 や .Xr rlogind 8 はこのモードを用いて、 リモート側でエコーしローカル側で .Ql ^S/^Q フロー制御する、出力のバックフラッシュが適切に行なわれる リモートログイン機構を実装しています。 その他の似たプログラムでもこのモードが利用できます。 .El .It Dv TIOCUCNTL 少数の単純なユーザ .Xr ioctl 2 コマンドを、 .Dv TIOCPKT と似たプロトコルを用いて疑似端末を通して渡すことのできるモードを、 有効/無効にします。 .Dv TIOCUCNTL モードと .Dv TIOCPKT モードは互いに排他的です。 このモードは疑似端末のマスタ側から設定します。 非 0 のパラメータを指定 (参照渡し) すると有効になり、 0 を指定 (参照渡し) すると無効になります。 以後マスタ側から .Xr read 2 を呼び出すと、 1 個の 0 バイトに続いて疑似端末のスレーブ側に書き込まれたデータが返されるか、 あるいはスレーブ側のユーザ制御操作を表す単一のバイトが返されるようになります。 ユーザ制御コマンドは、データを持たない特別な .Xr ioctl 2 操作で構成されます。コマンドは .Dv UIOCCMD Ns (n) の形で渡します。ここで、 .Ar n は 1 から 255 の範囲の数字です。 操作値 .Ar n は、マスタ側からの次回の .Xr read 2 により単一バイトとして受け取られます。 .Xr ioctl 2 .Dv UIOCCMD Ns (0) は何も操作は行いませんが (no-op)、 この機能の有無を調べるために使えます。 .Dv TIOCPKT モードの場合と同様、コマンド操作は .Xr select 2 で例外条件として検出できます。 .It Dv TIOCREMOTE 疑似端末のマスタ側用のモードで、 .Dv TIOCPKT とは独立です。 このモードでは (端末のモードに関わらず)、 疑似端末への入力をフロー制御し、入力編集を行わないようにします。 制御端末へ書き込みを行うと、 その端末から読み込むプロセスのためにレコード境界が作られます。 通常の使用では、 データの書き込みはそのデータが端末から行入力されたようになり、 0 バイトの書き込みはファイル終了文字が入力されたようになります。 .Dv TIOCREMOTE は、ウィンドウマネージャでリモート行編集を行うときや、 入力をフロー制御する必要のあるときに利用できます。 .El .Sh 関連ファイル .Bl -tag -width /dev/tty[p-sP-S][0-9a-v]x -compact .It Pa /dev/pty[p-sP-S][0-9a-v] マスタ疑似端末 .It Pa /dev/tty[p-sP-S][0-9a-v] スレーブ疑似端末 .El .Sh 診断 ありません。 .Sh 関連項目 .Xr tty 4 .Sh 歴史 .Nm ドライバは .Bx 4.2 から登場しました。