ptmx, pts -
擬似端末のマスタとスレーブ
ファイル
/dev/ptmx
(擬似端末多重デバイス;
pseudoterminal multiplexer device)
は、メジャーナンバー
(major number) 5、
マイナーナンバー (minor
number) 2
を持つキャラクターファイルであり、
通常、モードは 0666
で、所有権は root:root
である。
このファイルは、擬似端末のマスタとスレーブのペアを作成するために使用される。
プロセスが
/dev/ptmx
をオープンすると、そのプロセスには
擬似端末マスタ (pseudoterminal
master)
へのファイルディスクリプターが返され、
/dev/pts
ディレクトリに擬似端末スレーブ
(pseudoterminal slave)
デバイスが作成される。
/dev/ptmx
をオープンして得られるファイルディスクリプターはそれぞれ独立の擬似端末マスタであり、対応するスレーブを各々持つ。スレーブのパス名は、マスタのファイルディスクリプターを
ptsname(3)
に渡すと知ることができる。
擬似端末スレーブをオープンする前に、必ず、マスタのファイルディスクリプターを
引数として
grantpt(3) と
unlockpt(3)
を呼び出さなければならない。
擬似端末のマスタとスレーブの両方がオープンされた後は、スレーブは、
プロセスに対して、実端末
(real terminal)
と全く同じインターフェースを提供する。
スレーブに書かれたデータはマスタファイルディスクリプターに対する入力として扱われ、
マスタに書かれたデータはスレーブに対する入力として扱われる。
実例をあげると、擬似端末は
xterm(1)
のような端末エミュレータを実装するのに使用されている。
端末エミュレータでは、擬似端末のマスタから読み込まれたデータは、
アプリケーションにとって実端末のデータと全く同じもののように見える。
また、
sshd(8)
のようなリモートログイン用のプログラムの実装では、
擬似端末マスタから読み込まれたデータは、ネットワークを経由して、
端末や端末エミュレータに接続されているクライアントプログラムに送信される。
擬似端末は、 (
su(1) や
passwd(1) のような)
通常はパイプからの入力を拒否するプログラムに、
入力を送信するためにも使用できる。
/dev/ptmx,
/dev/pts/*
(UNIX 98 pseudoterminal naming と呼ばれる)
上記の機能の Linux
でのサポートは、通常
/dev/pts
にマウントされるはずの
devpts
ファイルシステムを通して実現されている、
getpt(3),
grantpt(3),
ptsname(3),
unlockpt(3),
pty(7)
この man ページは Linux
man-pages
プロジェクトのリリース
5.10
の一部である。プロジェクトの説明とバグ報告に関する情報は
https://www.kernel.org/doc/man-pages/
に書かれている。