OPENPTY

Section: Linux Programmer's Manual (3)
Updated: 2017-09-15
Index JM Home Page
 

名前

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) を見つけて、 マスタとスレーブのファイルディスクリプターを 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() は失敗する。  

属性

この節で使用されている用語の説明については、 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/ に書かれている。

関連キーワード

端末   疑似   スレーブ   struct   ペア   openpty   login   forkpty   termios   winsize   マスタ   ウインドウ   制御   属性   成功   Thread   safety   オープン   ユーティリティ   utmp   pseudoterminal   パラメーター   ログイン   準備   実際

Linux マニュアル 一覧

関連するコマンド・関数

forkpty.3   login_tty.3   ptsname.3   ptsname_r.3   ptmx.4   pts.4
 

Index

名前
書式
説明
返り値
エラー
属性
準拠
注意
バグ
関連項目
この文書について

This document was created by man2html, using the manual pages.
Time: 04:39:14 GMT, October 11, 2026