tail head cat sleep
QR code linking to this page

manページ  — PTY

名称

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() はグローバル変数 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() が続けられなくても通知はされません。

PTY (3) December 29, 1996

tail head cat sleep
QR code linking to this page


このマニュアルページサービスについてのご意見は Ben Bullock にお知らせください。 Privacy policy.