スポンサーリンク

PTY(3) FreeBSD ライブラリ関数マニュアル PTY(3)

名称

openpty, forkpty − 疑似端末を入手する補助関数

ライブラリ

システムユーティリティライブラリ (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 のパス名をこの 領域にコピーします。この配列で必要なスペースは、呼び出し側で割り振りま す。

引数 termpwinp が NULL ではない場合、 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() はグローバル変数 errno を ENOENT に設定 します。

forkpty() は、 fork(2) で説明してあるように、 errno を設定することがあり ます。

関連項目

chmod(2), chown(2), fork(2), getuid(2), open(2), revoke(2), login_tty(3), pty(4), termios(4), group(5)

バグ

呼び出しプロセスにスーパユーザの有効な UID がなければ、すべてのアクション は実行できません。 pty を割り振れる限り ( forkpty() の場合は新しいプロセ スを作成できる限り)、説明したステップを openpty() か forkpty() が続けられ なくても通知はされません。

FreeBSD 10.0 December 29, 1996 FreeBSD 10.0

スポンサーリンク