PTY(4)

名称
pty - 疑似端末ドライバ

書式
pseudo-device pty [count]

解説
pty ドライバは 疑似端末 と呼ばれるデバイス対のサポートを提供します。 疑似端末とは、 マスタ デバイスと スレーブ デバイスという 一対のキャラクタ型デバイスです。 スレーブデバイスは、 tty(4) に記述されているものと同一のインタフェースをプロセスに提供します。 ただし、 tty(4) に記述されるインタフェースを提供するような他のデバイスはすべて、 根底に何らかのハードウェアデバイスを持つのに対し、 スレーブデバイスは疑似端末のマスタ側を通じて別のプロセスに操作されます。 つまり、マスタデバイスに書き込まれた内容は すべてスレーブデバイスへ入力として送られ、 スレーブデバイスに書き込まれた内容は すべてマスタデバイスへ入力として渡されます。

カーネル設定ファイル中の指定にオプションの count を与えると、その数だけ疑似端末の組が構成されます。 count のデフォルトは 32 です。

次に挙げる ioctl(2) 呼び出しは疑似端末にのみ適用できます:

TIOCSTOP
    端末への出力を止めます (例えば ‘^S’ を押すように)。 パラメータは取りません。

TIOCSTART
    ( TIOCSTOP か ‘^S’ を押すことで止められていた ) 出力を再開します。 パラメータは取りません。

TIOCPKT
    パケット モードを有効/無効にします。 パケットモードは非 0 のパラメータを指定 (参照渡し) すると有効になり、 0 を指定 (参照渡し) すると無効になります。 疑似端末のマスタ側に適用された場合、以後端末から read(2) を呼び出すと、1 個の 0 バイト (シンボル定義では TIOCPKT_DATA ) に続いて疑似端末のスレーブ側に書き込まれたデータが返されるか、 あるいは制御状態情報を表す単一バイトが返されるようになります。 後者の場合、返されるバイトは次のビットの 0 個以上の和 (OR) になります:

    TIOCPKT_FLUSHREAD
        端末の読み込みキューがフラッシュされたとき

    TIOCPKT_FLUSHWRITE
        端末の書き込みキューがフラッシュされたとき

    TIOCPKT_STOP
        端末への出力が ‘^S’ のようにして止められたとき

    TIOCPKT_START
        端末への出力が再開されたとき

    TIOCPKT_DOSTOP
        t_stopc が ‘^S’ で t_startc が ‘^Q’ となったとき

    TIOCPKT_NOSTOP
        START 文字、STOP 文字が ‘^S/^Q’ でなくなったとき

        このモードが有効な間、 マスタ側から読み込まれる制御状態情報の存在は select(2) で例外条件として検出できます。

        rlogin(1) や rlogind(8) はこのモードを用いて、 リモート側でエコーしローカル側で ‘^S/^Q’ フロー制御する、出力のバックフラッシュが適切に行なわれる リモートログイン機構を実装しています。 その他の似たプログラムでもこのモードが利用できます。

TIOCUCNTL
    少数の単純なユーザ ioctl(2) コマンドを、 TIOCPKT と似たプロトコルを用いて疑似端末を通して渡すことのできるモードを、 有効/無効にします。 TIOCUCNTL モードと TIOCPKT モードは互いに排他的です。 このモードは疑似端末のマスタ側から設定します。 非 0 のパラメータを指定 (参照渡し) すると有効になり、 0 を指定 (参照渡し) すると無効になります。 以後マスタ側から read(2) を呼び出すと、 1 個の 0 バイトに続いて疑似端末のスレーブ側に書き込まれたデータが返されるか、 あるいはスレーブ側のユーザ制御操作を表す単一のバイトが返されるようになります。 ユーザ制御コマンドは、データを持たない特別な ioctl(2) 操作で構成されます。コマンドは UIOCCMD(n) の形で渡します。ここで、 n は 1 から 255 の範囲の数字です。 操作値 n は、マスタ側からの次回の read(2) により単一バイトとして受け取られます。 ioctl(2) UIOCCMD(0) は何も操作は行いませんが (no-op)、 この機能の有無を調べるために使えます。 TIOCPKT モードの場合と同様、コマンド操作は select(2) で例外条件として検出できます。

TIOCREMOTE
    疑似端末のマスタ側用のモードで、 TIOCPKT とは独立です。 このモードでは (端末のモードに関わらず)、 疑似端末への入力をフロー制御し、入力編集を行わないようにします。 制御端末へ書き込みを行うと、 その端末から読み込むプロセスのためにレコード境界が作られます。 通常の使用では、 データの書き込みはそのデータが端末から行入力されたようになり、 0 バイトの書き込みはファイル終了文字が入力されたようになります。 TIOCREMOTE は、ウィンドウマネージャでリモート行編集を行うときや、 入力をフロー制御する必要のあるときに利用できます。

関連ファイル
/dev/pty[p-sP-S][0-9a-v]
    マスタ疑似端末
/dev/tty[p-sP-S][0-9a-v]
    スレーブ疑似端末

診断
ありません。

関連項目
tty(4)

歴史
pty ドライバは 4.2BSD から登場しました。