plucky (3) openpty.3.gz

Provided by: manpages-ja-dev_0.5.0.0.20221215+dfsg-1_all bug

名前

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

書式

       #include <pty.h>

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

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

       #include <utmp.h>

       int login_tty(int fd);

       -lutil でリンクする。

説明

       openpty()   関数は、使用可能な疑似端末 (pseudoterminal) を見つけて、 マスタとスレーブのファイルディスクリ
       プターを 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()  は失敗する。

属性

       この節で使用されている用語の説明については、 attributes(7) を参照。

       ┌─────────────────────┬───────────────┬────────────────────────┐
       │インターフェース属性                     │
       ├─────────────────────┼───────────────┼────────────────────────┤
       │forkpty(), openpty() │ Thread safety │ MT-Safe locale         │
       ├─────────────────────┼───────────────┼────────────────────────┤
       │login_tty()          │ Thread safety │ MT-Unsafe race:ttyname │
       └─────────────────────┴───────────────┴────────────────────────┘

準拠

       これらは BSD の関数であり、 glibc2 に存在する。 POSIX での標準化はされていない。

注意

       glibc 2.8 で、 openpty()  と forkpty()  の構造体へのポインターの引数に const 修飾子が追加された。

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

バグ

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

関連項目

       fork(2), ttyname(3), pty(7)

この文書について

       この  man ページは Linux man-pages プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告
       に関する情報は https://www.kernel.org/doc/man-pages/ に書かれている。