.\" Copyright (c) OpenBSD Group .\" All rights reserved. .\" .\" %%%LICENSE_START(BSD_3_CLAUSE_UCB) .\" Redistribution and use in source and binary forms, with or without .\" modification, are permitted provided that the following conditions .\" are met: .\" 1. Redistributions of source code must retain the above copyright .\" notice, this list of conditions and the following disclaimer. .\" 2. Redistributions in binary form must reproduce the above copyright .\" notice, this list of conditions and the following disclaimer in the .\" documentation and/or other materials provided with the distribution. .\" 3. Neither the name of the University nor the names of its contributors .\" may be used to endorse or promote products derived from this software .\" without specific prior written permission. .\" .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE .\" ARE DISCLAIMED. IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF .\" SUCH DAMAGE. .\" %%%LICENSE_END .\" .\" Converted into a manpage again by Martin Schulze .\" .\" Added -lutil remark, 030718 .\" .\"******************************************************************* .\" .\" This file was generated with po4a. Translate the source file. .\" .\"******************************************************************* .\" .\" Japanese Version Copyright (c) 2002 Yuichi SATO .\" all rights reserved. .\" Translated Tue Jan 22 21:42:05 JST 2002 .\" by Yuichi SATO .\" Updated Mon Mar 8 2003 by Akihiro MOTOKI .\" Updated Sun Sep 14 2003 by Akihiro MOTOKI .\" .TH OPENPTY 3 2017\-09\-15 GNU "Linux Programmer's Manual" .SH 名前 openpty, login_tty, forkpty \- 端末ユーティリティ関数 .SH 書式 .nf \fB#include \fP .PP \fBint openpty(int *\fP\fIamaster\fP\fB, int *\fP\fIaslave\fP\fB, char *\fP\fIname\fP\fB,\fP \fB const struct termios *\fP\fItermp\fP\fB,\fP \fB const struct winsize *\fP\fIwinp\fP\fB);\fP .PP \fBpid_t forkpty(int *\fP\fIamaster\fP\fB, char *\fP\fIname\fP\fB,\fP \fB const struct termios *\fP\fItermp\fP\fB,\fP \fB const struct winsize *\fP\fIwinp\fP\fB);\fP \fB#include \fP .PP \fBint login_tty(int \fP\fIfd\fP\fB);\fP .PP \fI\-lutil\fP でリンクする。 .fi .SH 説明 \fBopenpty\fP() 関数は、使用可能な疑似端末 (pseudoterminal) を見つけて、 マスタとスレーブのファイルディスクリプターを \fIamaster\fP と \fIaslave\fP に入れて返す。 \fIname\fP が NULL でない場合、スレーブのファイル名が \fIname\fP に返される。 \fItermp\fP が NULL でない場合、スレーブの端末パラメーターは \fItermp\fP の値に設定される。 \fIwinp\fP が NULL でない場合、スレーブのウインドウサイズは \fIwinp\fP に設定される。 .PP \fBlogin_tty\fP() 関数は、ファイルディスクリプター \fIfd\fP で参照される端末にログインする準備をする (\fIfd\fP は実際の端末デバイスでも、 \fBopenpty\fP() で返される疑似端末のスレーブでもよい)。 具体的には、新しいセッションを作成し、 \fIfd\fP を呼び出し元のプロセスの制御端末とし、 呼び出し元の標準入力・標準出力・標準エラーのストリームを \fIfd\fP に設定した後、 \fIfd\fP をクローズする。 .PP \fBforkpty\fP() 関数は \fBopenpty\fP(), \fBfork\fP(2), \fBlogin_tty\fP() を組み合わせ、疑似端末を操作する新しいプロセスを生成する。疑似端末のマスタ側を参照するファイルディスクリプターは \fIamaster\fP で返される。 \fIname\fP が NULL でない場合には、スレーブのファイル名を返すのに \fIname\fP が指すバッファーが使用される。 \fItermp\fP と \fIwinp\fP 引数は、NULL でなければ、 疑似端末のスレーブ側の端末属性とウインドウサイズを決定する。 .SH 返り値 \fBopenpty\fP(), \fBlogin_tty\fP(), \fBforkpty\fP() の呼び出しが成功しなかった場合、 \-1 が返されて、 \fIerrno\fP はエラーを示す値に設定される。 成功した場合、 \fBopenpty\fP(), \fBlogin_tty\fP() および \fBforkpty\fP() の子プロセスは 0 を返し、 \fBforkpty\fP() の親プロセスは子プロセスのプロセス ID を返す。 .SH エラー 以下の場合に \fBopenpty\fP() は失敗する: .TP \fBENOENT\fP 使用可能な端末がない。 .PP \fBioctl\fP(2) が \fIfd\fP を呼び出し元のプロセスの制御端末に設定するのに失敗した場合、 \fBlogin_tty\fP() は失敗する。 .PP \fBopenpty\fP() と \fBfork\fP(2) のどちらかが失敗した場合、 \fBforkpty\fP() は失敗する。 .SH 属性 この節で使用されている用語の説明については、 \fBattributes\fP(7) を参照。 .TS allbox; lbw20 lb lb l l l. インターフェース 属性 値 T{ \fBforkpty\fP(), \fBopenpty\fP() T} Thread safety MT\-Safe locale T{ \fBlogin_tty\fP() T} Thread safety MT\-Unsafe race:ttyname .TE .sp 1 .SH 準拠 これらは BSD の関数であり、 glibc2 に存在する。 POSIX での標準化はされていない。 .SH 注意 glibc 2.8 で、 \fBopenpty\fP() と \fBforkpty\fP() の構造体へのポインターの引数に \fBconst\fP 修飾子が追加された。 .PP 2.0.92 より前のバージョンの glibc では、 \fBopenpty\fP() は BSD 疑似端末ペアのファイルディスクリプターを返す。 2.0.92 以降の glibc では、 \fBopenpty\fP() はまず Unix 98 疑似端末ペアをオープンしようとし、それに失敗した場合に BSD 疑似端末ペアのオープンへと移行する。 .SH バグ 誰も \fIname\fP に対してどのくらい大きさを予約しておけばいいか分からない。 したがって、NULL でない \fIname\fP を引数として \fBopenpty\fP() や \fBforkpty\fP() を呼び出すのは安全であるとは言えない。 .SH 関連項目 \fBfork\fP(2), \fBttyname\fP(3), \fBpty\fP(7) .SH この文書について この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 5.10 の一部である。プロジェクトの説明とバグ報告に関する情報は \%https://www.kernel.org/doc/man\-pages/ に書かれている。