OPENPTY

Section: Linux Programmer's Manual (3)
Updated: 2003-07-18
Index JM Home Page roff page
 

名前

openpty, login_tty, forkpty - 端末 (tty) ユーティリティ関数  

書式

#include <pty.h>

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

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

#include <utmp.h>

int login_tty(int fd);

-lutil でリンクする。
 

説明

openpty() 関数は、使用可能な疑似端末 (pseudo-terminal) を見つけて、 マスタとスレーブのファイル・ディスクリプタを amasteraslave に入れて返す。 name が NULL でない場合、スレーブのファイル名が name に返される。 termp が NULL でない場合、スレーブの端末パラメータは termp の値に設定される。 winp が NULL でない場合、スレーブのウインドウサイズは winp に設定される。

login_tty() 関数は、端末 fd にログインする準備をする (fd は実際の端末デバイスでも、 openpty() で返される疑似端末のスレーブでもよい)。 具体的には、新しいセッションを作成し、 fd をカレント・プロセスの制御端末とし、 カレント・プロセスの標準入力・標準出力・標準エラーのストリームを fd に設定した後、 fd をクローズする。

forkpty() 関数は openpty(), fork(2), login_tty() を組み合わせ、疑似端末を操作する新しいプロセスを生成する。 疑似端末のマスタ側のファイル・ディスクリプタは amaster に返され、 name が NULL でない場合には、スレーブのファイル名が name に返される。 termpwinp パラメータは、NULL でなければ、 疑似端末のスレーブ側の端末属性とウインドウサイズを決定する。  

返り値

openpty(), login_tty(), forkpty() の呼び出しが成功しなかった場合、 -1 が返されて、 errno はエラーを示す値に設定される。 成功した場合、 openpty(), login_tty() および 
forkpty() の子プロセスは 0 を返し、 forkpty() の親プロセスは子プロセスのプロセス ID を返す。  

エラー

以下の場合に openpty() は失敗する:
ENOENT
使用可能な端末がない。

ioctl(2) が fd をカレントプロセスの制御端末に設定するのに失敗した場合、 login_tty() は失敗する。

openpty() または fork(2) のどちらかが失敗した場合、 forkpty() は失敗する。  

準拠

これらは BSD の関数であり、libc5 と glibc2 に存在する。  

注意

2.0.92 より前のバージョンの glibc では、 openpty() は BSD 疑似端末ペアのファイル・ディスクリプタを返す。 2.0.92 以降の glibc では、 openpty() はまず Unix 98 疑似端末ペアをオープンしようとし、それに失敗した場合に BSD 疑似端末ペアのオープンへと移行する。  

バグ

誰も name に対してどのくらい大きさを予約しておけばいいか分からない。 したがって、NULL でない name を引き数として openpty() や forkpty() を呼び出すのは安全であるとは言えない。  

関連項目

fork(2), pty(7)


 

Index

名前
書式
説明
返り値
エラー
準拠
注意
バグ
関連項目

This document was created by man2html, using the manual pages.
Time: 04:31:55 GMT, November 19, 2007