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) を見つけて、
マスタとスレーブのファイル・ディスクリプタを
amaster
と
aslave
に入れて返す。
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
に返される。
termp
と
winp
パラメータは、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