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

引数 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() はグローバル変数 errnoENOENT に設定します。

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.

I'm not interested in developing a powerful brain. All I'm after is just a mediocre brain, something like the President of the American Telephone and Telegraph Company.
— Alan Turing