EN JA
PTY(3)
PTY(3) FreeBSD Library Functions Manual PTY(3)

名称

openpty, forkpty疑似端末を取得する補助関数

ライブラリ

System Utilities Library (libutil, -lutil)

書式

#include < sys/types.h>
#include < sys/ioctl.h>
#include < termios.h>
#include < libutil.h>

int
openpty( int *amaster, int *aslave, char *name, struct termios *termp, struct winsize *winp);

int
forkpty( int *amaster, char *name, struct termios *termp, struct winsize *winp);

解説

関数 openpty() は、次に使用できる疑似端末をシステムから取得しようと試みます ( pty(4) 参照)。成功して疑似端末を見つけるなら、スレーブデバイスの所有権を現在のプロセスの実 UID に、グループメンバシップをグループ“tty” (そのようなグループがシステムに存在するなら) に、所有者による読み込み書き込みパーミッションとグループの書き込みアクセスパーミッションを続いて変更し、 revoke(2) を呼び出すことによってライン現在の使用を無効にします。

引数 nameNULL ではない場合、 openpty() はスレーブ pty のパス名をこの領域にコピーします。この配列に必要なスペースは、呼び出し側の責任で割り付けます。

引数 termpwinpNULL ではない場合、 openpty() は、これらの引数が指す構造体の termios とウィンドウサイズの設定をそれぞれ初期化します。

戻る場合は、pty のマスタサイドとスレーブサイドのオープンファイル記述子が、 amasteraslave が指す場所にそれぞれ戻されます。

forkpty() 関数は最初に openpty() を呼び出し、次に使用できる疑似端末をシステムから取得します。成功した場合は、新しいプロセスがフォークされます。子プロセスでは、pty のマスタサイドの記述子をクローズし、スレーブ pty のために login_tty(3) を呼び出します。親プロセスでは、pty のスレーブサイドの記述子をクローズします。引数 amaster, name, termp そして winp は、 openpty() の記述と同じ意味です。

戻り値

openpty() 関数は、成功すれば 0 を戻し、失敗すると -1 を戻します。

forkpty() 関数は、は失敗すると -1 を戻し、スレーブプロセスに 0、親プロセスにスレーブプロセスのプロセス ID を戻します。

エラー

openpty() 関数は、失敗して、 grantpt(3), posix_openpt(3), ptsname(3)unlockpt(3) 関数と revoke(2) システムコールで明記されたエラーのいずれかがグローバル変数 errno に設定されます。

これに加えて、 forkpty() は、 fork(2) で記述してある任意の値を設定します。

December 29, 1996 FreeBSD