OSDN Git Service

3f1a0c45aaacc00152f075bcb03f44c7f1d8e320
[linuxjm/LDP_man-pages.git] / release / man3 / openpty.3
1 .\" Copyright (c) OpenBSD Group
2 .\" All rights reserved.
3 .\"
4 .\" Redistribution and use in source and binary forms, with or without
5 .\" modification, are permitted provided that the following conditions
6 .\" are met:
7 .\" 1. Redistributions of source code must retain the above copyright
8 .\"    notice, this list of conditions and the following disclaimer.
9 .\" 2. Redistributions in binary form must reproduce the above copyright
10 .\"    notice, this list of conditions and the following disclaimer in the
11 .\"    documentation and/or other materials provided with the distribution.
12 .\" 3. Neither the name of the University nor the names of its contributors
13 .\"    may be used to endorse or promote products derived from this software
14 .\"    without specific prior written permission.
15 .\"
16 .\" THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND
17 .\" ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE
18 .\" IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE
19 .\" ARE DISCLAIMED.  IN NO EVENT SHALL THE REGENTS OR CONTRIBUTORS BE LIABLE
20 .\" FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
21 .\" DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS
22 .\" OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION)
23 .\" HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT
24 .\" LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY
25 .\" OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
26 .\" SUCH DAMAGE.
27 .\"
28 .\" Converted into a manpage again by Martin Schulze <joey@infodrom.org>
29 .\"
30 .\" Added -lutil remark, 030718
31 .\"
32 .\" Japanese Version Copyright (c) 2002 Yuichi SATO
33 .\"         all rights reserved.
34 .\" Translated Tue Jan 22 21:42:05 JST 2002
35 .\"         by Yuichi SATO <ysato@h4.dion.ne.jp>
36 .\" Updated Mon Mar  8 2003 by Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>
37 .\" Updated Sun Sep 14 2003 by Akihiro MOTOKI
38 .\"
39 .\"WORD:        tty             端末
40 .\"WORD:        pseudoterminal  疑似端末
41 .\"
42 .TH OPENPTY 3  2010-06-13 "GNU" "Linux Programmer's Manual"
43 .SH 名前
44 openpty, login_tty, forkpty \- 端末ユーティリティ関数
45 .SH 書式
46 .nf
47 .B #include <pty.h>
48 .sp
49 .BI "int openpty(int *" amaster ", int *" aslave ", char *" name ,
50 .BI "            const struct termios *" termp ,
51 .BI "            const struct winsize *" winp );
52 .sp
53 .BI "pid_t forkpty(int *" amaster ", char *" name ,
54 .BI "              const struct termios *" termp ,
55 .BI "              const struct winsize *" winp );
56 .sp
57 .B #include <utmp.h>
58 .sp
59 .BI "int login_tty(int " fd );
60 .sp
61 \fI\-lutil\fP でリンクする。
62 .fi
63 .SH 説明
64 .BR openpty ()
65 関数は、使用可能な疑似端末 (pseudoterminal) を見つけて、
66 マスタとスレーブのファイル・ディスクリプタを
67 .I amaster
68
69 .I aslave
70 に入れて返す。
71 .I name
72 が NULL でない場合、スレーブのファイル名が
73 .I name
74 に返される。
75 .I termp
76 が NULL でない場合、スレーブの端末パラメータは
77 .I termp
78 の値に設定される。
79 .I winp
80 が NULL でない場合、スレーブのウインドウサイズは
81 .I winp
82 に設定される。
83
84 .BR login_tty ()
85 関数は、端末
86 .I fd
87 にログインする準備をする
88 .RI ( fd
89 は実際の端末デバイスでも、
90 .BR openpty ()
91 で返される疑似端末のスレーブでもよい)。
92 具体的には、新しいセッションを作成し、
93 .I fd
94 を呼び出し元のプロセスの制御端末とし、
95 呼び出し元の標準入力・標準出力・標準エラーのストリームを
96 .I fd
97 に設定した後、
98 .I fd
99 をクローズする。
100
101 .BR forkpty ()
102 関数は
103 .BR openpty (),
104 .BR fork (2),
105 .BR login_tty ()
106 を組み合わせ、疑似端末を操作する新しいプロセスを生成する。
107 疑似端末のマスタ側のファイル・ディスクリプタは
108 .I amaster
109 に返され、
110 .I name
111 が NULL でない場合には、スレーブのファイル名が
112 .I name
113 に返される。
114 .I termp
115
116 .I winp
117 引き数は、NULL でなければ、
118 疑似端末のスレーブ側の端末属性とウインドウサイズを決定する。
119 .SH 返り値
120 .BR openpty (),
121 .BR login_tty (),
122 .BR forkpty ()
123 の呼び出しが成功しなかった場合、
124 \-1 が返されて、
125 .I errno
126 はエラーを示す値に設定される。
127 成功した場合、
128 .BR openpty (),
129 .BR login_tty ()
130 および       
131 .BR forkpty ()
132 の子プロセスは 0 を返し、
133 .BR forkpty ()
134 の親プロセスは子プロセスのプロセス ID を返す。
135 .SH エラー
136 以下の場合に
137 .BR openpty ()
138 は失敗する:
139 .TP
140 .B ENOENT
141 使用可能な端末がない。
142 .LP
143 .BR ioctl (2)
144
145 .I fd
146 を呼び出し元のプロセスの制御端末に設定するのに失敗した場合、
147 .BR login_tty ()
148 は失敗する。
149 .LP
150 .BR openpty ()
151 または
152 .BR fork (2)
153 のどちらかが失敗した場合、
154 .BR forkpty ()
155 は失敗する。
156 .SH 準拠
157 これらは BSD の関数であり、libc5 と glibc2 に存在する。
158 POSIX での標準化はされていない。
159 .SH 注意
160 .\" これらの関数は libutil に含まれている。したがって、コンパイル時の
161 .\" オプションに
162 .\" .B \-lutil
163 .\" を加える必要がある。
164 .\"
165 glibc 2.8 で、
166 .BR openpty ()
167
168 .BR forkpty ()
169 の構造体へのポインタの引き数に
170 .B const
171 修飾子が追加された。
172
173 2.0.92 より前のバージョンの glibc では、
174 .BR openpty ()
175 は BSD 疑似端末ペアのファイル・ディスクリプタを返す。
176 2.0.92 以降の glibc では、
177 .BR openpty ()
178 はまず Unix 98 疑似端末ペアをオープンしようとし、それに失敗した場合に
179 BSD 疑似端末ペアのオープンへと移行する。
180 .SH バグ
181 誰も
182 .I name
183 に対してどのくらい大きさを予約しておけばいいか分からない。
184 したがって、NULL でない
185 .I name
186 を引き数として
187 .BR openpty ()
188
189 .BR forkpty ()
190 を呼び出すのは安全であるとは言えない。
191 .SH 関連項目
192 .BR fork (2),
193 .BR ttyname (3),
194 .BR pty (7)