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) を呼び出すことによってライン現在の使用を無効にします。引数 name が NULL ではない場合、 openpty() はスレーブ pty のパス名をこの領域にコピーします。この配列に必要なスペースは、呼び出し側の責任で割り付けます。
引数 termp か winp が NULL ではない場合、 openpty() は、これらの引数が指す構造体の termios とウィンドウサイズの設定をそれぞれ初期化します。
戻る場合は、pty のマスタサイドとスレーブサイドのオープンファイル記述子が、 amaster と aslave が指す場所にそれぞれ戻されます。
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) で記述してある任意の値を設定します。
関連項目
chmod(2), chown(2), fork(2), getuid(2), open(2), revoke(2), login_tty(3), pty(4), termios(4), group(5)December 29, 1996 | FreeBSD |