OSDN Git Service

Update release for LDP 3.67
[linuxjm/LDP_man-pages.git] / release / man3 / termios.3
1 .\" Copyright (c) 1993 Michael Haardt
2 .\" (michael@moria.de)
3 .\" Fri Apr  2 11:32:09 MET DST 1993
4 .\"
5 .\" %%%LICENSE_START(GPLv2+_DOC_FULL)
6 .\" This is free documentation; you can redistribute it and/or
7 .\" modify it under the terms of the GNU General Public License as
8 .\" published by the Free Software Foundation; either version 2 of
9 .\" the License, or (at your option) any later version.
10 .\"
11 .\" The GNU General Public License's references to "object code"
12 .\" and "executables" are to be interpreted as the output of any
13 .\" document formatting or typesetting system, including
14 .\" intermediate and printed output.
15 .\"
16 .\" This manual is distributed in the hope that it will be useful,
17 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
18 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
19 .\" GNU General Public License for more details.
20 .\"
21 .\" You should have received a copy of the GNU General Public
22 .\" License along with this manual; if not, see
23 .\" <http://www.gnu.org/licenses/>.
24 .\" %%%LICENSE_END
25 .\"
26 .\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
27 .\" Modified 1995-02-25 by Jim Van Zandt <jrv@vanzandt.mv.com>
28 .\" Modified 1995-09-02 by Jim Van Zandt <jrv@vanzandt.mv.com>
29 .\" moved to man3, aeb, 950919
30 .\" Modified 2001-09-22 by Michael Kerrisk <mtk.manpages@gmail.com>
31 .\" Modified 2001-12-17, aeb
32 .\" Modified 2004-10-31, aeb
33 .\" 2006-12-28, mtk:
34 .\"     Added .SS headers to give some structure to this page; and a
35 .\"     small amount of reordering.
36 .\"     Added a section on canonical and noncanonical mode.
37 .\"     Enhanced the discussion of "raw" mode for cfmakeraw().
38 .\"     Document CMSPAR.
39 .\"
40 .\"*******************************************************************
41 .\"
42 .\" This file was generated with po4a. Translate the source file.
43 .\"
44 .\"*******************************************************************
45 .\"
46 .\" Japanese Version Copyright (c) 1998-1999
47 .\"   Michihide Hotta and NAKANO Takeo all rights reserved.
48 .\" Translated 1998-02-02, Michihide Hotta <sim@remus.dti.ne.jp>
49 .\" Updated 1999-03-14, NAKANO Takeo <nakano@apm.seikei.ac.jp>
50 .\" Updated 2001-02-17, Kentaro Shirakata <argrath@ub32.org>
51 .\" Updated 2001-10-16, Kentaro Shirakata <argrath@ub32.org>
52 .\" Updated 2002-01-04, Kentaro Shirakata <argrath@ub32.org>
53 .\" Updated 2003-09-01, Kentaro Shirakata <argrath@ub32.org>
54 .\" Updated 2006-07-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
55 .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46
56 .\" Updated 2007-09-06, Akihiro MOTOKI, LDP v2.64
57 .\"
58 .TH TERMIOS 3 2014\-05\-08 Linux "Linux Programmer's Manual"
59 .SH 名前
60 termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
61 cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \-
62 ターミナル属性の取得・設定、ライン制御、ボーレートの取得・設定
63 .SH 書式
64 .nf
65 \fB#include <termios.h>\fP
66 .br
67 \fB#include <unistd.h>\fP
68 .sp
69 \fBint tcgetattr(int \fP\fIfd\fP\fB, struct termios *\fP\fItermios_p\fP\fB);\fP
70 .sp
71 \fBint tcsetattr(int \fP\fIfd\fP\fB, int \fP\fIoptional_actions\fP\fB,\fP
72 \fB              const struct termios *\fP\fItermios_p\fP\fB);\fP
73 .sp
74 \fBint tcsendbreak(int \fP\fIfd\fP\fB, int \fP\fIduration\fP\fB);\fP
75 .sp
76 \fBint tcdrain(int \fP\fIfd\fP\fB);\fP
77 .sp
78 \fBint tcflush(int \fP\fIfd\fP\fB, int \fP\fIqueue_selector\fP\fB);\fP
79 .sp
80 \fBint tcflow(int \fP\fIfd\fP\fB, int \fP\fIaction\fP\fB);\fP
81 .sp
82 \fBvoid cfmakeraw(struct termios *\fP\fItermios_p\fP\fB);\fP
83 .sp
84 \fBspeed_t cfgetispeed(const struct termios *\fP\fItermios_p\fP\fB);\fP
85 .sp
86 \fBspeed_t cfgetospeed(const struct termios *\fP\fItermios_p\fP\fB);\fP
87 .sp
88 \fBint cfsetispeed(struct termios *\fP\fItermios_p\fP\fB, speed_t \fP\fIspeed\fP\fB);\fP
89 .sp
90 \fBint cfsetospeed(struct termios *\fP\fItermios_p\fP\fB, speed_t \fP\fIspeed\fP\fB);\fP
91 .sp
92 \fBint cfsetspeed(struct termios *\fP\fItermios_p\fP\fB, speed_t \fP\fIspeed\fP\fB);\fP
93 .fi
94 .sp
95 .in -4n
96 glibc 向けの機能検査マクロの要件 (\fBfeature_test_macros\fP(7)  参照):
97 .in
98 .sp
99 \fBcfsetspeed\fP(), \fBcfmakeraw\fP(): _BSD_SOURCE
100 .SH 説明
101 termios 関数群は、非同期通信ポートを制御するための汎用 ターミナルインタフェースである。
102 .SS "termios 構造体"
103 .LP
104 ここに示されている関数の多くは、引き数に \fItermios_p\fP を用いる。 この引き数は \fItermios\fP 構造体へのポインタである。
105 この構造体には少なくとも以下に示すメンバが含まれる:
106 .sp
107 .in +4n
108 .nf
109 tcflag_t c_iflag;      /* input modes */
110 tcflag_t c_oflag;      /* output modes */
111 tcflag_t c_cflag;      /* control modes */
112 tcflag_t c_lflag;      /* local modes */
113 cc_t     c_cc[NCCS];   /* special characters */
114 .fi
115 .in
116 .PP
117 以下に、これらのフィールドに割り当て可能な値について説明する。 最初の 4 つのビットマスクフィールドでは、
118 関係するフラグの定義のいくつかは、特定の機能検査マクロ (\fBfeature_test_macros\fP(7)  参照)
119 が定義された場合にのみ公開される。 必要な機能検査マクロは角括弧 ("[]") 内に書かれている。
120 .PP
121 以下の説明で、 "POSIX にはない" は その値が POSIX.1\-2001 で規定されていないことを意味し、 "XSI" はその値が
122 POSIX.1\-2001 の XSI 拡張で 規定されていることを意味する。
123 .PP
124 \fIc_iflag\fP フラグには以下の要素を指定できる:
125 .TP 
126 \fBIGNBRK\fP
127 入力中の BREAK 信号を無視する。
128 .TP 
129 \fBBRKINT\fP
130 \fBIGNBRK\fP が設定されている場合は、BREAK 信号は無視される。 \fBIGNBRK\fP が設定されていないが、\fBBRKINT\fP
131 が設定されている場合は、 BREAK 信号によって入出力キューがフラッシュされ、 さらに、端末がフォアグラウンドプロセスグループの制御端末の場合は、
132 フォアグラウンドプロセスグループに \fBSIGINT\fP が送られる。 \fBIGNBRK\fP も \fBBRKINT\fP も設定されていない場合、 BREAK
133 をヌルバイト (\(aq\e0\(aq) として読み込む。 ただし、\fBPARMRK\fP が設定されている場合は \e377 \e0 \e0
134 のシーケンスとして 読み込む。
135 .TP 
136 \fBIGNPAR\fP
137 フレームエラーおよびパリティエラーを無視する。
138 .TP 
139 \fBPARMRK\fP
140 \fBIGNPAR\fP が設定されていない場合、パリティエラーあるいはフレームエラー の発生した文字の前に \e377 \e0
141 を付加する。\fBIGNPAR\fP も \fBPARMRK\fP も 設定されていない場合、パリティエラーあるいはフレームエラーの発生した文字を \e0
142 として読み込む。
143 .TP 
144 \fBINPCK\fP
145 入力のパリティチェックを有効にする。
146 .TP 
147 \fBISTRIP\fP
148 8 ビット目を落とす。
149 .TP 
150 \fBINLCR\fP
151 入力の NL (New Line: 改行文字) を CR (Carriage Return: 復帰文字) に 置き換える。
152 .TP 
153 \fBIGNCR\fP
154 入力の CR を無視する。
155 .TP 
156 \fBICRNL\fP
157 (\fBIGNCR\fP が設定されていない場合) 入力の CR を NL に置き換える。
158 .TP 
159 \fBIUCLC\fP
160 (POSIX にはない) 入力の大文字を小文字に置き換える。
161 .TP 
162 \fBIXON\fP
163 出力の XON/XOFF フロー制御を有効にする。
164 .TP 
165 \fBIXANY\fP
166 (XSI) 任意の文字を入力すると、停止していた出力を再開する (デフォルトでは、START 文字でのみ出力が再開される)。
167 .TP 
168 \fBIXOFF\fP
169 入力の XON/XOFF フロー制御を有効にする。
170 .TP 
171 \fBIMAXBEL\fP
172 (POSIX にはない) 入力キューが一杯の時にベルを鳴らす。 Linux ではこのビットは実装されておらず、 常にセットされているかのように振舞う。
173 .TP 
174 \fBIUTF8\fP (Linux 2.6.4 以降)
175 (POSIX にはない) 入力が UTF8 である; これにより cooked mode で文字削除 (character\-erase) を
176 正しく機能させることができる。
177 .PP
178 \fIc_oflag\fP フラグには以下の要素を指定できる:
179 .TP 
180 \fBOPOST\fP
181 実装に依存した出力処理を有効にする。
182 .TP 
183 \fBOLCUC\fP
184 (POSIX にはない) 出力時に小文字を大文字に変換する。
185 .TP 
186 \fBONLCR\fP
187 (XSI) 出力の NL を CR\-NL に置き換える。
188 .TP 
189 \fBOCRNL\fP
190 出力の CR を NL に置き換える。
191 .TP 
192 \fBONOCR\fP
193 0 桁目で CR を出力しない。
194 .TP 
195 \fBONLRET\fP
196 CR を出力しない。
197 .TP 
198 \fBOFILL\fP
199 転送時間を遅らせるのではなく、補填文字 (fill character) を送る。 (訳注:特定の文字に対して、端末側の処理を待つために転送を一定時間
200 遅らせることができる。また、 \fBOFILL\fP を指定すると 転送を遅らせる代わりに補填文字を送る。)
201 .TP 
202 \fBOFDEL\fP
203 補填文字を ASCII DEL にする。 このフラグが設定されていない場合は ASCII NUL (\(aq\e0\(aq) になる。 (Linux
204 では実装されていない)
205 .TP 
206 \fBNLDLY\fP
207 NL の遅延を設定する。値は \fBNL0\fP (遅延なし) および \fBNL1\fP である。 [\fB_BSD_SOURCE\fP か
208 \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要]
209 .TP 
210 \fBCRDLY\fP
211 CR の遅延を設定する。値は \fBCR0\fP (遅延なし), \fBCR1\fP, \fBCR2\fP,\fBCR3\fP である。 [\fB_BSD_SOURCE\fP か
212 \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要]
213 .TP 
214 \fBTABDLY\fP
215 水平タブ (horizontal tab) の遅延を設定する。 値は \fBTAB0\fP (遅延なし), \fBTAB1\fP, \fBTAB2\fP, \fBTAB3\fP
216 (\fBXTABS\fP) である。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要]
217 XTAB3 (これは XTABS と同じである) の値はタブをスペース何個に変換するかを示す (タブは 8 桁毎に止まる)。
218 .TP 
219 \fBBSDLY\fP
220 後退 (backspace) の遅延を設定する。 値は \fBBS0\fP (遅延なし) あるいは \fBBS1\fP である。 (実装されたことはない)
221 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要]
222 .TP 
223 \fBVTDLY\fP
224 垂直タブ (vertical tab) の遅延を設定する。 値は \fBVT0\fP (遅延なし) あるいは \fBVT1\fP である。
225 .TP 
226 \fBFFDLY\fP
227 頁送り (form feed) の遅延を設定する。 値は \fBFF0\fP (遅延なし) あるいは \fBFF1\fP である。 [\fB_BSD_SOURCE\fP
228 か \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要]
229 .PP
230 \fIc_cflag\fP フラグは以下の通り:
231 .TP 
232 \fBCBAUD\fP
233 (POSIX にはない) ボーレートマスク (4+1 ビット)。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要]
234 .TP 
235 \fBCBAUDEX\fP
236 (POSIX にはない) 追加のボーレートマスク (1 ビット)。 \fBCBAUD\fP に含まれている。 [\fB_BSD_SOURCE\fP か
237 \fB_SVID_SOURCE\fP が必要]
238 .sp
239 (POSIX では、 \fItermios\fP 構造体に格納されたボーレートは正確なものではなく、 ボーレートを操作するために
240 \fBcfgetispeed\fP()  と \fBcfsetispeed\fP()  が提供されている。 \fIc_cflag\fP 内の \fBCBAUD\fP
241 で選択されたビットを使うシステムもあれば、 \fIsg_ispeed\fP や \fIsg_ospeed\fP といった独立したフィールドを使うものもある。)
242 .TP 
243 \fBCSIZE\fP
244 文字サイズを設定する。 値は \fBCS5\fP, \fBCS6\fP, \fBCS7\fP, \fBCS8\fP である。
245 .TP 
246 \fBCSTOPB\fP
247 ストップビットを 1 ではなく 2 にする。
248 .TP 
249 \fBCREAD\fP
250 受信を有効にする。
251 .TP 
252 \fBPARENB\fP
253 出力にパリティを付加し、入力のパリティチェックを行う。
254 .TP 
255 \fBPARODD\fP
256 設定されると、入力および出力に対するパリティが奇数パリティとなる。 設定されない場合、偶数パリティが使用される。
257 .TP 
258 \fBHUPCL\fP
259 最後のプロセスがデバイスをクローズした後、モデムの制御線を low にする (切断する)。
260 .TP 
261 \fBCLOCAL\fP
262 モデムの制御線を無視する。
263 .TP 
264 \fBLOBLK\fP
265 (POSIX にはない) 現在のシェル層以外からの出力を抑制する。
266  \fBshl\fP (シェル層) で用いられる。(Linux では実装されていない)
267 .TP 
268 \fBCIBAUD\fP
269 (POSIX にはない) 入力速度のマスク。 \fBCIBAUD\fP ビットのための値は \fBCBAUD\fP ビットのための値と同じであり、 左に
270 \fBIBSHIFT\fP ビットシフトしたものである。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要] (Linux
271 では実装されていない)
272 .TP 
273 \fBCMSPAR\fP
274 (POSIX にはない)  (一部のシリアルデバイスでサポートされている)  「スティック (stick)」パリティ (マーク/スペース
275 パリティ)を使用する。 \fBPARODD\fP が設定された場合パリティビットは常に 1 となり、 設定されない場合は常に 0 となる。
276 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要]
277 .TP 
278 \fBCRTSCTS\fP
279 (POSIX にはない) RTS/CTS (ハードウェア) フロー制御を有効にする。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP
280 が必要]
281 .PP
282 \fIc_lflag\fP フラグは以下の通り:
283 .TP 
284 \fBISIG\fP
285 INTR, QUIT, SUSP, DSUSP の文字を受信した時、対応するシグナルを 発生させる。
286 .TP 
287 \fBICANON\fP
288 カノニカルモードを有効にする (下記参照)。
289 .TP 
290 \fBXCASE\fP
291 .\" glibc is probably now wrong to allow
292 .\" Define
293 .\" .B _XOPEN_SOURCE
294 .\" to expose
295 .\" .BR XCASE .
296 (POSIX にはない; Linux では対応していない)  \fBICANON\fP が同時に設定された場合、端末は大文字のみが有効である。
297 入力された文字は \e が付いた文字を除いて小文字に変換される。 出力時は、大文字の前に \e が付き、小文字は大文字に変換される。
298 [\fB_BSD_SOURCE\fP が \fB_SVID_SOURCE\fP か \fB_XOPEN_SOURCE\fP が必要]
299 .TP 
300 \fBECHO\fP
301 入力された文字をエコーする。
302 .TP 
303 \fBECHOE\fP
304 \fBICANON\fP も同時に設定された場合、ERASE 文字は前の文字を削除し、 WERASE 文字は前の単語を削除する。
305 .TP 
306 \fBECHOK\fP
307 \fBICANON\fP も同時に設定された場合、KILL 文字は現在の行を削除する。
308 .TP 
309 \fBECHONL\fP
310 \fBICANON\fP も同時に設定された場合、 ECHO が設定されていなくても NL 文字をエコーする。
311 .TP 
312 \fBECHOCTL\fP
313 (POSIX にはない) \fBECHO\fP も同時に設定された場合、TAB, NL, START, STOP 以外の
314 端末特殊文字が \fB^X\fP としてエコーされる。
315 X は特殊文字に ASCII コードで 0x40 を足した文字である。
316 例えば文字 0x08 (BS) は \fB^H\fP とエコーされる。
317 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要]
318 .TP 
319 \fBECHOPRT\fP
320 (POSIX にはない) \fBICANON\fP および \fBECHO\fP が同時に設定されている場合、
321 削除された文字も表示される。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要]
322 .TP 
323 \fBECHOKE\fP
324 (POSIX にはない) \fBICANON\fP も設定された場合、 KILL が行の各文字を消去する代わりにエコーされる。 これは \fBECHOE\fP
325 および \fBECHOPRT\fP を指定することと等しい。 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要]
326 .TP 
327 \fBDEFECHO\fP
328 (POSIX にはない) プロセスが読み込んだときにだけエコーする。 (Linux では実装されていない)
329 .TP 
330 \fBFLUSHO\fP
331 (POSIX にはない; Linux では対応していない)  出力をフラッシュする。このフラグは DISCARD 文字を入力することで切替えられる。
332 [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要]
333 .TP 
334 \fBNOFLSH\fP
335 .\" Stevens lets SUSP only flush the input queue
336 INT, QUIT, SUSP 文字に対応するシグナルを発生する際の 入力・出力キューのフラッシュを無効にする。
337 .TP 
338 \fBTOSTOP\fP
339 バックグラウンドプロセスのプロセスグループで制御端末へ 文字を出力しようとしているプロセスに対して \fBSIGTTOU\fP シグナルを送る。
340 .TP 
341 \fBPENDIN\fP
342 (POSIX にはない; Linux では対応していない)  次の文字を読み込んだ時、入力キュー中の全文字を再表示する。 (\fBbash\fP(1)
343 は入力行をこのように処理している。)  [\fB_BSD_SOURCE\fP か \fB_SVID_SOURCE\fP が必要]
344 .TP 
345 \fBIEXTEN\fP
346 実装依存の入力処理を有効にする。 このフラグは、特殊文字である EOL2, LNEXT, REPRINT, WERASE や、 \fBIUCLC\fP
347 フラグを有効にするために必要である。
348 .PP
349 \fIc_cc\fP 配列は端末特殊文字を定義している。
350 シンボルの一覧 (初期値) と意味は以下の通り。
351 .TP 
352 \fBVDISCARD\fP
353 (POSIX にはない; Linux では対応していない; 017, SI, Ctrl\-O)  未送信バッファの内容の破棄/保存を切り替える。
354 \fBIEXTEN\fP がセットされている場合に認識し、入力には渡されない。
355 .TP 
356 \fBVDSUSP\fP
357 (POSIX にはない; Linux では対応していない; 031, EM, Ctrl\-Y)  遅延中断文字 (DSUSP)。
358 ユーザープログラムから文字が読み込まれた時に \fBSIGTSTP\fP シグナルを送る。
359 \fBIEXTEN\fP と \fBISIG\fP がセットされていて、システムがジョブ制御に対応している
360 場合に 認識し、入力には渡されない。
361 .TP 
362 \fBVEOF\fP
363 (004, EOT, Ctrl\-D)  ファイル終端文字 (EOF)。
364 より正確には、tty バッファの内容を行末を待たずにユーザープログラムに送る。
365 これが行の最初の文字だった場合、ユーザープログラムの \fBread\fP(2) は 0 を 返し、
366 ファイル終端であることを知らせる。 \fBICANON\fP がセットされている場合に認識し、
367 入力には渡されない。
368 .TP 
369 \fBVEOL\fP
370 (0, NUL)  追加の行末文字 (EOL)。
371 \fBICANON\fP がセットされている場合に認識する。
372 .TP 
373 \fBVEOL2\fP
374 (POSIX にはない; 0, NUL)  追加の行末文字 (EOL2)。
375 \fBICANON\fP がセットされている場合に認識する。
376 .TP 
377 \fBVERASE\fP
378 (0177, DEL, rubout か 010, BS, Ctrl\-H か #)  消去文字 (ERASE)。
379 これにより、直前の未消去文字を消去する。
380 しかし、EOF や行頭を超えては消去しない。
381 \fBICANON\fP がセットされている場合に認識し、入力には渡されない。
382 .TP 
383 \fBVINTR\fP
384 (003, ETX, Ctrl\-C か 0177, DEL, rubout)  割り込み文字 (INTR)。
385 \fBSIGINT\fP シグナルを送る。
386 \fBISIG\fP がセットされている場合に認識し、入力には渡されない。
387 .TP 
388 \fBVKILL\fP
389 (025, NAK, Ctrl\-U か Ctrl\-X か @)  完全消去文字 (KILL)。
390 直前の EOF か行頭以降の全ての入力を消去する。
391 \fBICANON\fP がセットされている場合に認識し、入力には渡されない。
392 .TP 
393 \fBVLNEXT\fP
394 (POSIX にはない; 026, SYN Ctrl\-V)  リテラル (LNEXT)。
395 次の入力文字をエスケープし、特別な意味があっても解釈しない。
396 \fBIEXTEN\fP がセットされている場合に認識し、入力には渡されない。
397 .TP 
398 \fBVMIN\fP
399 非カノニカル読み込み時の最小文字数 (MIN)。
400 .TP 
401 \fBVQUIT\fP
402 (034, FS, Ctrl\-\e)  終了文字 (QUIT)。
403 \fBSIGQUIT\fP シグナルを送る。
404 \fBISIG\fP がセットされている場合に認識し、入力には渡されない。
405 .TP 
406 \fBVREPRINT\fP
407 (POSIX にはない; 022, DC2, Ctrl\-R) まだ読み込んでいない文字列を再表示する (REPRINT)。
408 \fBICANON\fP と \fBIEXTEN\fP がセットされている場合に認識し、入力には渡されない。
409 .TP 
410 \fBVSTART\fP
411 (021, DC1, Ctrl\-Q)  開始文字 (START)。停止文字で停止した出力を再開する。
412 \fBIXON\fP がセットされている場合に認識し、入力には渡されない。
413 .TP 
414 \fBVSTATUS\fP
415 (POSIX にはない; Linux では対応していない; 状態要求: 024, DC4, Ctrl\-T)
416 状態文字 (STATUS)。端末での状態情報を表示する。
417 表示される情報には、フォアグラウンドプロセスの状態やそのプロセスが消費した
418 CPU 時間の総計が含まれる。
419 また、フォアグラウンドプロセスグループにシグナル \fBSIGINFO\fP を送信する
420 (Linux ではサポートされていない)。
421 .TP 
422 \fBVSTOP\fP
423 (023, DC3, Ctrl\-S)  停止文字 (STOP)。
424 開始文字が入力されるまで出力を停止する。
425 \fBIXON\fP が設定されている場合に認識し、入力には渡されない。
426 .TP 
427 \fBVSUSP\fP
428 (032, SUB, Ctrl\-Z)  中断文字 (SUSP)。
429 \fBSIGTSTP\fP シグナルを送る。
430 \fBISIG\fP がセットされている場合に認識し、入力には渡されない。
431 .TP 
432 \fBVSWTCH\fP
433 (POSIX にはない; Linux では対応していない; 0, NUL)  スイッチ文字 (SWTCH)。
434 System V で (シェルのジョブ制御の前にあった) \fIshell layers\fP での
435 シェルの切り替えに用いられる。
436 .TP 
437 \fBVTIME\fP
438 非カノニカル読み込み時のタイムアウト時間 (1/10 秒単位) (TIME)。
439 .TP 
440 \fBVWERASE\fP
441 (POSIX にはない; 027, ETB, Ctrl\-W)  単語消去 (WERASE)。
442 \fBICANON\fP と \fBIEXTEN\fP がセットされている場合に認識し、入力には渡されない。
443 .LP
444 対応する \fIc_cc\fP 要素の値を \fB_POSIX_VDISABLE\fP に設定することで、
445 それぞれの端末制御文字を無効にすることができる。
446 .LP
447 上記のシンボルの示す値は全て異なる。ただし、 \fBVTIME\fP, \fBVMIN\fP はそれぞれ
448 \fBVEOL\fP, \fBVEOF\fP と同じ値である。 非カノニカルモードでは、特殊文字の意味は
449 タイムアウトの意味に変わる。 \fBVMIN\fP と \fBVTIME\fP の説明については、
450 下記の非カノニカルモードの説明を参照のこと。
451 .SS 端末の設定の取得と変更
452 .PP
453 \fBtcgetattr\fP()  は \fIfd\fP に関するパラメータを取得し、\fItermios_p\fP が参照する構 造体 \fItermios\fP
454 に設定する。この関数はバックグラウンドプロセスから 呼ばれることもあるが、この場合、端末の属性はフォアグラウンドプロセス によって変化することもある。
455 .LP
456 \fBtcsetattr\fP()  は端末に関連したパラメータを設定する (ハードウェアの設定に必要で、ここで 設定できないものを除く)。設定には
457 \fItermios_p\fP が参照する \fItermios\fP 構造体を用いる。 \fIoptional_actions\fP
458 には変更が有効となるタイミングを設定する:
459 .IP \fBTCSANOW\fP
460 ただちに変更が有効となる。
461 .IP \fBTCSADRAIN\fP
462 \fIfd\fP への出力がすべて転送された後に変更が有効になる。このオプションは 出力に影響するパラメータを変更する時に使用するべきである。
463 .IP \fBTCSAFLUSH\fP
464 パラメータを変更する前に、 \fIfd\fP への出力がすべて転送され、受信したがまだ読み込んでいないすべての 入力が破棄される。
465 .SS カノニカルモードと非カノニカルモード
466 \fIc_lflag\fP の \fBICANON\fP フラグの設定により、端末がカノニカルモードで動作するかが決定される。 \fBICANON\fP
467 がセットされた場合、カノニカルモード (canonical mode) となり、 セットされない場合、非カノニカルモード (noncanonical
468 mode) となる。 デフォルトでは、 \fBICANON\fP はセットされる。
469
470 カノニカルモードでは、以下のような動作となる。
471 .IP * 2
472 入力は行単位に行われる。 行区切り文字が打ち込まれた時点で、入力行が利用可能となる。 行区切り文字は NL, EOL, EOL2 および行頭での EOF
473 である。 EOF 以外の場合、 \fBread\fP(2)  が返すバッファに行区切り文字も含められる。
474 .IP * 2
475 行編集が有効となる (ERASE, KILL が効果を持つ。 \fBIEXTEN\fP フラグが設定された場合は、 WERASE, REPRINT,
476 LNEXT も効果を持つ)。 \fBread\fP(2)  は最大でも 1行の入力しか返さない。 \fBread\fP(2)
477 が要求したバイト数が現在の入力行のバイト数よりも少ない場合、 要求したのと同じバイト数だけが読み込まれ、 残りの文字は次回の \fBread\fP(2)
478 で読み込まれる。
479 .PP
480 非カノニカルモードでは、入力は即座に利用可能となり (ユーザは行区切り文字を打ち込む必要はない)、入力処理は実行されず、行編集は無効となる。 MIN
481 (\fIc_cc[VMIN]\fP) と TIME (\fIc_cc[VTIME]\fP) の設定により、 \fBread\fP(2)
482 が完了する条件が決定される。4種類の場合がある:
483 .TP 
484 MIN == 0, TIME == 0 (ポーリングリード)
485 データが利用可能であれば、 \fBread\fP(2) はすぐに返る。このときの返り値は、そのとき利用可能なバイト数か \fBread\fP(2)
486 の要求バイト数のうち小さい方となる。 利用可能なデータがない場合 \fBread\fP(2) は 0 を返す。
487 .TP 
488 MIN > 0, TIME == 0 (ブロッキングリード)
489 \fBread\fP(2)  は、利用可能なデータが MIN バイトに達するまで停止する。返り値は最大でも要求バイト数である。
490 .TP 
491 MIN == 0, TIME > 0 (タイムアウト付きの読み込み)
492 TIME はタイマの上限を規定し、単位は 1/10 秒である。 タイマは \fBread\fP(2)  が呼ばれた時点で開始される。 \fBread\fP(2)
493 が返るのは、少なくとも 1バイトのデータが利用可能となった時点、 またはタイマが時間切れとなった時点である。
494 入力が全くなくタイマが時間切れとなった場合、 \fBread\fP(2)  は 0 を返す。 \fBread\fP(2)
495 の呼び出し時にすでに利用可能なデータがある場合、 その呼び出しは呼び出し直後にそのデータが到着したかのように振る舞う。
496 .TP 
497 MIN > 0, TIME > 0 (バイト間のタイムアウト付きの読み出し)
498 TIME はタイマの上限を規定し、単位は 1/10 秒である。 入力の最初のバイトが利用可能になった後は、 新たに
499 1バイト受信する度にタイマがリセットされる。 \fBread\fP(2) は以下の条件のいずれかを満たした場合に返る。
500 .RS
501 .IP * 3
502 MIN バイトのデータを受信した。
503 .IP *
504 バイト間タイマーが時間切れになった。
505 .IP *
506 .\" e.g., Solaris
507 \fBread\fP(2) で要求されたバイト数のデータを受信した (POSIX ではこの終了条件は規定されておらず、 他のいくつかの実装では
508 \fBread\fP(2) はこの条件では返らない)。
509 .RE
510 .IP
511 タイマーは最初のバイトが利用可能になった時点で開始されるので、 少なくとも 1 バイトは読み出される。 \fBread\fP()
512 の呼び出し時にすでに利用可能なデータがある場合、 その呼び出しは呼び出し直後にそのデータが到着したかのように振る舞う。
513 .PP
514 .\" POSIX.1-2008 XBD 11.1.7
515 POSIX では、 \fBO_NONBLOCK\fP ファイル状態フラグが MIN や TIME の設定よりも優先されるかは規定されていない。
516 \fBO_NONBLOCK\fP が設定された場合、 非カノニカルモードの \fBread\fP(2) は MIN や TIME の設定に関わらずすぐに返る。
517 また、利用可能なデータがない場合、 POSIX では、は非カノニカルモードの \fBread\fP(2) が 0 を返す方法も、 \fIerrno\fP に
518 \fBEAGAIN\fP を設定して \-1 を返すことも認められている。
519 .SS "Raw mode"
520 .LP
521 \fBcfmakeraw\fP()  は、端末を昔の Version 7 端末ドライバの "raw" モードのように設定する。
522 入力は文字単位に可能であり、エコーが無効となり、 端末の入出力文字に対する特殊処理はすべて無効となる。 端末の属性は以下のように設定される:
523 .nf
524
525     termios_p\->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
526                     | INLCR | IGNCR | ICRNL | IXON);
527     termios_p\->c_oflag &= ~OPOST;
528     termios_p\->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
529     termios_p\->c_cflag &= ~(CSIZE | PARENB);
530     termios_p\->c_cflag |= CS8;
531 .fi
532 .SS ライン制御
533 .LP
534 \fBtcsendbreak\fP()  は端末が非同期のシリアルデータ転送を用いている場合に、 連続した0のビット列を一定間隔で転送する。
535 \fIduration\fP が 0 の場合は、0 のビットを 0.25 秒以上、 0.5 秒以下の間隔で転送する。 \fIduration\fP が 0
536 でない場合は、 0 のビットを実装依存の時間間隔で送る。
537 .LP
538 端末が非同期のシリアルデータ転送モードでない場合、 \fBtcsendbreak\fP()  は何も行わずに戻る。
539 .LP
540 \fBtcdrain\fP()  は \fIfd\fP が行っている出力の転送が完了するまで待つ。
541 .LP
542 \fBtcflush\fP()  は \fIfd\fP が行っているデータの出力でまだ転送されていないもの、あるいは受信し
543 たがまだ入力していないものを破棄する。いずれを行うかは \fIqueue_selector\fP の値で定める:
544 .IP \fBTCIFLUSH\fP
545 受信したが読んでいないデータをフラッシュする。
546 .IP \fBTCOFLUSH\fP
547 書いたが送信していないデータをフラッシュする。
548 .IP \fBTCIOFLUSH\fP
549 受信したが読んでいないデータ・書いたが送信していないデータ両方 をフラッシュする。
550 .LP
551 \fBtcflow\fP()  は \fIfd\fP で指定されたオブジェクトにおけるデータの送信あるいは受信を一時的に中断する。 送信と受信のどちらかは、
552 \fIaction\fPで決まる:
553 .IP \fBTCOOFF\fP
554 出力の中断。
555 .IP \fBTCOON\fP
556 中断した出力の再開。
557 .IP \fBTCIOFF\fP
558 STOP 文字の送信。 STOP 文字は端末デバイスからシステムへのデータ送信を停止する。
559 .IP \fBTCION\fP
560 START 文字の送信。 START 文字は端末デバイスからシステムへのデータ送信を開始する。
561 .LP
562 端末ファイルがオープンされたときのデフォルトでは、 入力も出力も中断されていない。
563 .SS ライン速度
564 ボーレート関数は \fItermios\fP 構造体中の入出力ボーレートを 取得、設定するために提供される。 設定された値は \fBtcsetattr\fP()
565 の呼び出しが成功するまでは有効ではない。
566
567 速度を \fBB0\fP に設定した場合、モデムは停止 (hang up) する。 \fBB38400\fP に該当する実際のビットレートは
568 \fBsetserial\fP(8)  で 変更できる。
569 .LP
570 入力および出力ボーレートは \fItermios\fP 構造体に格納される。
571 .LP
572 \fBcfgetospeed\fP()  は \fItermios_p\fP が示している \fItermios\fP 構造体に格納されている 出力ボーレートを返す。
573 .LP
574 \fBcfsetospeed\fP()  は \fItermios_p\fP で示されている \fItermios\fP 構造体中の出力ボーレートを \fIspeed\fP
575 に設定する。値は以下のいずれかでなければならない:
576 .nf
577
578 \fB     B0
579         B50
580         B75
581         B110
582         B134
583         B150
584         B200
585         B300
586         B600
587         B1200
588         B1800
589         B2400
590         B4800
591         B9600
592         B19200
593         B38400
594         B57600
595         B115200
596         B230400\fP
597
598 .fi
599 0ボー (\fBB0\fP) は接続の中断に用いられる。 B0が指定された場合、モデムの制御線は使用されない状態になり、一般にはこれで 接続が切断される。
600 \fBCBAUDEX\fP はPOSIX.1で定義されている速度の範囲外 (57600 およびそれ以上)  を設定する。すなわち例えば \fBB57600\fP &
601 \fBCBAUDEX\fP は 0 でない。
602 .LP
603 \fBcfgetispeed\fP()  は \fItermios\fP 構造体中の入力ボーレートを返す。
604 .LP
605 \fBcfsetispeed\fP()  は \fItermios\fP 構造体中の入力ボーレートを \fIspeed\fP に設定する。 \fIspeed\fP には、上述の
606 \fBcfsetospeed\fP()  のボーレート定数 \fBBnnn\fP のいずれか一つを指定しなければならない。 入力ボーレートが 0
607 に設定された場合、入力ボーレートは出力ボーレート と同じ値となる。
608 .LP
609 \fBcfsetspeed\fP()  は 4.4BSD による拡張である。この関数は \fBcfsetispeed\fP()
610 と同じ引き数をとり、入出力両方の速度を設定する。
611 .SH 返り値
612 .LP
613 \fBcfgetispeed\fP()  は \fItermios\fP 構造体中の入力ボーレートを返す。
614 .LP
615 \fBcfgetospeed\fP()  は \fItermios\fP 構造体中の出力ボーレートを返す。
616 .LP
617 他のすべての関数の戻り値:
618 .IP 0
619 実行成功。
620 .IP \-1
621 実行失敗。 \fIerrno\fP がエラーの種類を示す。
622 .LP
623 \fBtcsetattr\fP()  は \fIなんらかの\fP 変更要求が成功した場合に成功を返すことに注意。 従って、複数の変更を行った場合には、引き続いて
624 \fBtcgetattr\fP()  を呼び出して全ての変更が実行されているかを確認する必要があるかもしれない。
625 .SH 属性
626 .SS "マルチスレッディング (pthreads(7) 参照)"
627 関数 \fBtcgetattr\fP(), \fBtcsetattr\fP(), \fBtcsendbreak\fP(), \fBtcdrain\fP(),
628 \fBtcflush\fP(), \fBtcflow\fP(), \fBcfmakeraw\fP(), \fBcfgetispeed\fP(),
629 \fBcfgetospeed\fP(), \fBcfsetispeed\fP(), \fBcfsetospeed\fP(), \fBcfsetspeed\fP()
630 はスレッドセーフである。
631 .SH 準拠
632 \fBtcgetattr\fP(), \fBtcsetattr\fP(), \fBtcsendbreak\fP(), \fBtcdrain\fP(),
633 \fBtcflush\fP(), \fBtcflow\fP(), \fBcfgetispeed\fP(), \fBcfgetospeed\fP(),
634 \fBcfsetispeed\fP(), \fBcfsetospeed\fP()  は POSIX.1\-2001 で規定されている。
635
636 \fBcfmakeraw\fP()  と \fBcfsetspeed\fP()  は非標準だが、BSD では利用可能である。
637 .SH 注意
638 UNIX\ V7 とその後のいくつかのシステムでは、ボーレートの 14 個のリストである B0, ..., B9600 の後ろに EXTA, EXTB
639 ("External A" と "External B") の 2 つを 追加している。
640 多くのシステムではさらに高速なボーレートのためにリストを拡張している。
641 .LP
642 .\" libc4 until 4.7.5, glibc for sysv: EINVAL for duration > 0.
643 .\" libc4.7.6, libc5, glibc for unix: duration in ms.
644 .\" glibc for bsd: duration in us
645 .\" glibc for sunos4: ignore duration
646 \fBtcsendbreak\fP()  で \fIduration\fP に 0 以外を指定した場合の効果は様々である。 SunOS は
647 \fIduration\fP\fB*\fP\fIN\fP 秒のブレークを規定している。ここで \fIN\fP は 0.25 以上 0.5 未満である。 Linux, AIX,
648 DU, Tru64 は \fIduration\fP ミリ秒のブレークを送信する。 FreeBSD, NetBSD, HP\-UX, MacOS は
649 \fIduration\fP の値を無視する。 Solaris と UnixWare では、非ゼロの \fIduration\fP を指定した
650 \fBtcsendbreak\fP()  の振る舞いは \fBtcdrain\fP()  と同様である。
651 .SH 関連項目
652 \fBstty\fP(1), \fBconsole_ioctl\fP(4), \fBtty_ioctl\fP(4), \fBsetserial\fP(8)
653 .SH この文書について
654 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.67 の一部
655 である。プロジェクトの説明とバグ報告に関する情報は
656 http://www.kernel.org/doc/man\-pages/ に書かれている。