OSDN Git Service

(split) Convert release and draft pages to UTF-8.
[linuxjm/LDP_man-pages.git] / release / man3 / termios.3
1 .\" Hey Emacs! This file is -*- nroff -*- source.
2 .\"
3 .\" Copyright (c) 1993 Michael Haardt
4 .\" (michael@moria.de)
5 .\" Fri Apr  2 11:32:09 MET DST 1993
6 .\"
7 .\" This is free documentation; you can redistribute it and/or
8 .\" modify it under the terms of the GNU General Public License as
9 .\" published by the Free Software Foundation; either version 2 of
10 .\" the License, or (at your option) any later version.
11 .\"
12 .\" The GNU General Public License's references to "object code"
13 .\" and "executables" are to be interpreted as the output of any
14 .\" document formatting or typesetting system, including
15 .\" intermediate and printed output.
16 .\"
17 .\" This manual is distributed in the hope that it will be useful,
18 .\" but WITHOUT ANY WARRANTY; without even the implied warranty of
19 .\" MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
20 .\" GNU General Public License for more details.
21 .\"
22 .\" You should have received a copy of the GNU General Public
23 .\" License along with this manual; if not, write to the Free
24 .\" Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111,
25 .\" USA.
26 .\"
27 .\" Modified 1993-07-24 by Rik Faith <faith@cs.unc.edu>
28 .\" Modified 1995-02-25 by Jim Van Zandt <jrv@vanzandt.mv.com>
29 .\" Modified 1995-09-02 by Jim Van Zandt <jrv@vanzandt.mv.com>
30 .\" moved to man3, aeb, 950919
31 .\" Modified 2001-09-22 by Michael Kerrisk <mtk.manpages@gmail.com>
32 .\" Modified 2001-12-17, aeb
33 .\" Modified 2004-10-31, aeb
34 .\" 2006-12-28, mtk:
35 .\"     Added .SS headers to give some structure to this page; and a
36 .\"     small amount of reordering.
37 .\"     Added a section on canonical and noncanonical mode.
38 .\"     Enhanced the discussion of "raw" mode for cfmakeraw().
39 .\"     Document CMSPAR.
40 .\"
41 .\" Japanese Version Copyright (c) 1998-1999
42 .\"   Michihide Hotta and NAKANO Takeo all rights reserved.
43 .\" Translated 1998-02-02, Michihide Hotta <sim@remus.dti.ne.jp>
44 .\" Updated 1999-03-14, NAKANO Takeo <nakano@apm.seikei.ac.jp>
45 .\" Updated 2001-02-17, Kentaro Shirakata <argrath@ub32.org>
46 .\" Updated 2001-10-16, Kentaro Shirakata <argrath@ub32.org>
47 .\" Updated 2002-01-04, Kentaro Shirakata <argrath@ub32.org>
48 .\" Updated 2003-09-01, Kentaro Shirakata <argrath@ub32.org>
49 .\" Updated 2006-07-26, Akihiro MOTOKI <amotoki@dd.iij4u.or.jp>, LDP v2.36
50 .\" Updated 2007-05-01, Akihiro MOTOKI, LDP v2.46
51 .\" Updated 2007-09-06, Akihiro MOTOKI, LDP v2.64
52 .\"
53 .\"WORD:        carriage return         復帰(文字)
54 .\"WORD:        new line                改行(文字)
55 .\"WORD:        fill character          補填文字
56 .\"WORD:        horizontal tab          水平タブ
57 .\"WORD:        backspace               後退(文字)
58 .\"WORD:        vertical tab            垂直タブ
59 .\"WORD:        feature test macro      機能検査マクロ
60 .\"
61 .TH TERMIOS 3 2010-06-20 "Linux" "Linux Programmer's Manual"
62 .SH 名前
63 termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
64 cfmakeraw, cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, cfsetspeed \-
65 ターミナル属性の取得・設定、ライン制御、ボーレートの取得・設定
66 .SH 書式
67 .nf
68 .B #include <termios.h>
69 .br
70 .B #include <unistd.h>
71 .sp
72 .BI "int tcgetattr(int " fd ", struct termios *" termios_p );
73 .sp
74 .BI "int tcsetattr(int " fd ", int " optional_actions ,
75 .BI "              const struct termios *" termios_p );
76 .sp
77 .BI "int tcsendbreak(int " fd ", int " duration );
78 .sp
79 .BI "int tcdrain(int " fd );
80 .sp
81 .BI "int tcflush(int " fd ", int " queue_selector );
82 .sp
83 .BI "int tcflow(int " fd ", int " action );
84 .sp
85 .BI "void cfmakeraw(struct termios *" termios_p );
86 .sp
87 .BI "speed_t cfgetispeed(const struct termios *" termios_p );
88 .sp
89 .BI "speed_t cfgetospeed(const struct termios *" termios_p );
90 .sp
91 .BI "int cfsetispeed(struct termios *" termios_p ", speed_t " speed );
92 .sp
93 .BI "int cfsetospeed(struct termios *" termios_p ", speed_t " speed );
94 .sp
95 .BI "int cfsetspeed(struct termios *" termios_p ", speed_t " speed );
96 .fi
97 .sp
98 .in -4n
99 glibc 向けの機能検査マクロの要件
100 .RB ( feature_test_macros (7)
101 参照):
102 .in
103 .sp
104 .BR cfsetspeed (),
105 .BR cfmakeraw ():
106 _BSD_SOURCE
107 .SH 説明
108 termios 関数群は、非同期通信ポートを制御するための汎用
109 ターミナルインタフェースである。
110 .SS "termios 構造体"
111 .LP
112 ここに示されている関数の多くは、引き数に \fItermios_p\fP を用いる。
113 この引き数は \fItermios\fP 構造体へのポインタである。
114 この構造体には少なくとも以下に示すメンバが含まれる:
115 .sp
116 .in +4n
117 .nf
118 tcflag_t c_iflag;      /* input modes */
119 tcflag_t c_oflag;      /* output modes */
120 tcflag_t c_cflag;      /* control modes */
121 tcflag_t c_lflag;      /* local modes */
122 cc_t     c_cc[NCCS];   /* control chars */
123 .fi
124 .in
125 .PP
126 以下に、これらのフィールドに割り当て可能な値について説明する。
127 最初の 4 つのビットマスクフィールドでは、
128 関係するフラグの定義のいくつかは、特定の機能検査マクロ
129 .RB ( feature_test_macros (7)
130 参照) が定義された場合にのみ公開される。
131 必要な機能検査マクロは角括弧 ("[]") 内に書かれている。
132 .PP
133 以下の説明で、 "POSIX にはない" は
134 その値が POSIX.1-2001 で規定されていないことを意味し、
135 "XSI" はその値が POSIX.1-2001 の XSI 拡張で
136 規定されていることを意味する。
137 .PP
138 \fIc_iflag\fP フラグには以下の要素を指定できる:
139 .TP
140 .B IGNBRK
141 入力中の BREAK 信号を無視する。
142 .TP
143 .B BRKINT
144 \fBIGNBRK\fP が設定されている場合は、BREAK 信号は無視される。
145 \fBIGNBRK\fP が設定されていないが、\fBBRKINT\fP が設定されている場合は、
146 BREAK 信号によって入出力キューがフラッシュされ、
147 さらに、端末がフォアグラウンドプロセスグループの制御端末の場合は、
148 フォアグラウンドプロセスグループに \fBSIGINT\fP が送られる。
149 \fBIGNBRK\fP も \fBBRKINT\fP も設定されていない場合、
150 BREAK を NULL バイト (\(aq\\0\(aq) として読み込む。
151 ただし、\fBPARMRK\fP が設定されている場合は \\377 \\0 \\0 のシーケンスとして
152 読み込む。
153 .TP
154 .B IGNPAR
155 フレームエラーおよびパリティエラーを無視する。
156 .TP
157 .B PARMRK
158 \fBIGNPAR\fP が設定されていない場合、パリティエラーあるいはフレームエラー
159 の発生した文字の前に \\377 \\0 を付加する。\fBIGNPAR\fP も \fBPARMRK\fP も
160 設定されていない場合、パリティエラーあるいはフレームエラーの発生した文字を
161 \\0 として読み込む。
162 .TP
163 .B INPCK
164 入力のパリティチェックを有効にする。
165 .TP
166 .B ISTRIP
167 8 ビット目を落とす。
168 .TP
169 .B INLCR
170 入力の NL (New Line: 改行文字) を CR (Carriage Return: 復帰文字) に
171 置き換える。
172 .TP
173 .B IGNCR
174 入力の CR を無視する。
175 .TP
176 .B ICRNL
177 (\fBIGNCR\fP が設定されていない場合) 入力の CR を NL に置き換える。
178 .TP
179 .B IUCLC
180 (POSIX にはない) 入力の大文字を小文字に置き換える。
181 .TP
182 .B IXON
183 出力の XON/XOFF フロー制御を有効にする。
184 .TP
185 .B IXANY
186 (XSI) 任意の文字を入力すると、停止していた出力を再開する
187 (デフォルトでは、START 文字でのみ出力が再開される)。
188 .TP
189 .B IXOFF
190 入力の XON/XOFF フロー制御を有効にする。
191 .TP
192 .B IMAXBEL
193 (POSIX にはない) 入力キューが一杯の時にベルを鳴らす。
194 Linux ではこのビットは実装されておらず、
195 常にセットされているかのように振舞う。
196 .TP
197 .BR IUTF8 " (Linux 2.6.4 以降)"
198 (POSIX にはない) 入力が UTF8 である;
199 これにより cooked mode で文字削除 (character-erase) を
200 正しく機能させることができる。
201 .PP
202 POSIX.1 で定義されている \fIc_oflag\fP フラグを以下に示す:
203 .TP
204 .B OPOST
205 実装に依存した出力処理を有効にする。
206 .PP
207 残りの \fIc_oflag\fP フラグは、特記のない限り POSIX.1-2001 で定義されている。
208 .TP
209 .B OLCUC
210 (POSIX にはない) 出力時に小文字を大文字に変換する。
211 .TP
212 .B ONLCR
213 (XSI) 出力の NL を CR-NL に置き換える。
214 .TP
215 .B OCRNL
216 出力の CR を NL に置き換える。
217 .TP
218 .B ONOCR
219 0 桁目で CR を出力しない。
220 .TP
221 .B ONLRET
222 CR を出力しない。
223 .TP
224 .B OFILL
225 転送時間を遅らせるのではなく、補填文字 (fill character) を送る。
226 (訳注:特定の文字に対して、端末側の処理を待つために転送を一定時間
227 遅らせることができる。また、 \fBOFILL\fP を指定すると
228 転送を遅らせる代わりに補填文字を送る。)
229 .TP
230 .B OFDEL
231 (POSIX にはない) 補填文字を ASCII DEL にする。
232 このフラグが設定されていない場合は ASCII NUL (\(aq\\0\(aq) になる。
233 (Linux では実装されていない)
234 .TP
235 .B NLDLY
236 NL の遅延を設定する。値は \fBNL0\fP (遅延なし) および \fBNL1\fP である。
237 .RB [ _BSD_SOURCE
238
239 .B _SVID_SOURCE
240
241 .B _XOPEN_SOURCE
242 が必要]
243 .TP
244 .B CRDLY
245 CR の遅延を設定する。値は \fBCR0\fP (遅延なし),
246 \fBCR1\fP, \fBCR2\fP,\fBCR3\fP である。
247 .RB [ _BSD_SOURCE
248
249 .B _SVID_SOURCE
250
251 .B _XOPEN_SOURCE
252 が必要]
253 .TP
254 .B TABDLY
255 水平タブ (horizontal tab) の遅延を設定する。
256 値は \fBTAB0\fP (遅延なし),
257 \fBTAB1\fP, \fBTAB2\fP, \fBTAB3\fP (\fBXTABS\fP) である。
258 .RB [ _BSD_SOURCE
259
260 .B _SVID_SOURCE
261
262 .B _XOPEN_SOURCE
263 が必要]
264 XTAB3 (これは XTABS と同じである) の値はタブをスペース何個に変換するかを示す
265 (タブは 8 桁毎に止まる)。
266 .TP
267 .B BSDLY
268 後退 (backspace) の遅延を設定する。
269 値は \fBBS0\fP (遅延なし) あるいは \fBBS1\fP である。
270 (実装されたことはない)
271 .RB [ _BSD_SOURCE
272
273 .B _SVID_SOURCE
274
275 .B _XOPEN_SOURCE
276 が必要]
277 .TP
278 .B VTDLY
279 垂直タブ (vertical tab) の遅延を設定する。
280 値は \fBVT0\fP (遅延なし) あるいは \fBVT1\fP である。
281 .TP
282 .B FFDLY
283 頁送り (form feed) の遅延を設定する。
284 値は \fBFF0\fP (遅延なし) あるいは \fBFF1\fP である。
285 .RB [ _BSD_SOURCE
286
287 .B _SVID_SOURCE
288
289 .B _XOPEN_SOURCE
290 が必要]
291 .PP
292 \fIc_cflag\fP フラグは以下の通り:
293 .TP
294 .B CBAUD
295 (POSIX にはない) ボーレートマスク (4+1 ビット)。
296 .RB [ _BSD_SOURCE
297
298 .B _SVID_SOURCE
299 が必要]
300 .TP
301 .B CBAUDEX
302 (POSIX にはない) 追加のボーレートマスク (1 ビット)。
303 .B CBAUD
304 に含まれている。
305 .RB [ _BSD_SOURCE
306
307 .B _SVID_SOURCE
308 が必要]
309 .sp
310 (POSIX では、
311 .I termios
312 構造体に格納されたボーレートは正確なものではなく、
313 ボーレートを操作するために
314 .BR cfgetispeed ()
315
316 .BR cfsetispeed ()
317 が提供されている。
318 .I c_cflag
319 内の
320 .B CBAUD
321 で選択されたビットを使うシステムもあれば、
322 .I sg_ispeed
323
324 .I sg_ospeed
325 といった独立したフィールドを使うものもある。)
326 .TP
327 .B CSIZE
328 文字サイズを設定する。
329 値は \fBCS5\fP, \fBCS6\fP, \fBCS7\fP, \fBCS8\fP である。
330 .TP
331 .B CSTOPB
332 ストップビットを 1 ではなく 2 にする。
333 .TP
334 .B CREAD
335 受信を有効にする。
336 .TP
337 .B PARENB
338 出力にパリティを付加し、入力のパリティチェックを行う。
339 .TP
340 .B PARODD
341 設定されると、入力および出力に対するパリティが奇数パリティとなる。
342 設定されない場合、偶数パリティが使用される。
343 .TP
344 .B HUPCL
345 最後のプロセスがデバイスをクローズした後、モデムの制御線を low にする
346 (切断する)。
347 .TP
348 .B CLOCAL
349 モデムの制御線を無視する。
350 .TP
351 .B LOBLK
352 (POSIX にはない) 現在のシェル層以外からの出力を抑制する。
353  \fBshl\fP (シェル層) で用いられる。(Linux では実装されていない)
354 .TP
355 .B CIBAUD
356 (POSIX にはない) 入力速度のマスク。
357 .B CIBAUD
358 ビットのための値は
359 .B CBAUD
360 ビットのための値と同じであり、
361 左に
362 .B IBSHIFT
363 ビットシフトしたものである。
364 .RB [ _BSD_SOURCE
365
366 .B _SVID_SOURCE
367 が必要]
368 (Linux では実装されていない)
369 .TP
370 .B CMSPAR
371 (POSIX にはない)
372 (一部のシリアルデバイスでサポートされている)
373 「スティック (stick)」パリティ (マーク/スペース パリティ)を使用する。
374 .B PARODD
375 が設定された場合パリティビットは常に 1 となり、
376 設定されない場合は常に 0 となる。
377 .RB [ _BSD_SOURCE
378
379 .B _SVID_SOURCE
380 が必要]
381 .TP
382 .B CRTSCTS
383 (POSIX にはない) RTS/CTS (ハードウェア) フロー制御を有効にする。
384 .RB [ _BSD_SOURCE
385
386 .B _SVID_SOURCE
387 が必要]
388 .PP
389 \fIc_lflag\fP フラグは以下の通り:
390 .TP
391 .B ISIG
392 INTR, QUIT, SUSP, DSUSP の文字を受信した時、対応するシグナルを
393 発生させる。
394 .TP
395 .B ICANON
396 カノニカルモードを有効にする (下記参照)。
397 .TP
398 .B XCASE
399 (POSIX にはない; Linux では対応していない)
400 \fBICANON\fP が同時に設定された場合、端末は大文字のみが有効である。
401 入力された文字は \\ が付いた文字を除いて小文字に変換される。
402 出力時は、大文字の前に \\ が付き、小文字は大文字に変換される。
403 .RB [ _BSD_SOURCE
404
405 .B _SVID_SOURCE
406
407 .B _XOPEN_SOURCE
408 が必要]
409 .\" 以下はおそらく glibc の間違いであろう。
410 .\" .B XCASE
411 .\" を公開するには
412 .\" .B _XOPEN_SOURCE
413 .\" を定義すること。
414 .TP
415 .B ECHO
416 入力された文字をエコーする。
417 .TP
418 .B ECHOE
419 \fBICANON\fP も同時に設定された場合、ERASE 文字は前の文字を削除し、
420 WERASE 文字は前の単語を削除する。
421 .TP
422 .B ECHOK
423 \fBICANON\fP も同時に設定された場合、KILL 文字は現在の行を削除する。
424 .TP
425 .B ECHONL
426 \fBICANON\fP も同時に設定された場合、
427 ECHO が設定されていなくても NL 文字をエコーする。
428 .TP
429 .B ECHOCTL
430 (POSIX にはない) \fBECHO\fP も同時に設定された場合、
431 TAB, NL, START, STOP の ASCII 制御文字が \fB^X\fP としてエコーされる。
432 X は制御文字より ASCII コードで 0x10 だけ大きな文字である。
433 例えば文字 0x28 (BS) は \fB^H\fP とエコーされる。
434 .RB [ _BSD_SOURCE
435
436 .B _SVID_SOURCE
437 が必要]
438 .TP
439 .B ECHOPRT
440 (POSIX にはない) \fBICANON\fP および \fBIECHO\fP が同時に設定されている場合、
441 削除された文字も表示される。
442 .RB [ _BSD_SOURCE
443
444 .B _SVID_SOURCE
445 が必要]
446 .TP
447 .B ECHOKE
448 (POSIX にはない) \fBICANON\fP も設定された場合、
449 KILL が行の各文字を消去する代わりにエコーされる。
450 これは \fBECHOE\fP および \fBECHOPRT\fP を指定することと等しい。
451 .RB [ _BSD_SOURCE
452
453 .B _SVID_SOURCE
454 が必要]
455 .TP
456 .B DEFECHO
457 (POSIX にはない) プロセスが読み込んだときにだけエコーする。
458 (Linux では実装されていない)
459 .TP
460 .B FLUSHO
461 (POSIX にはない; Linux では対応していない)
462 出力をフラッシュする。このフラグは DISCARD 文字を入力することで切替えられる。
463 .RB [ _BSD_SOURCE
464
465 .B _SVID_SOURCE
466 が必要]
467 .TP
468 .B NOFLSH
469 .\" Stevens lets SUSP only flush the input queue
470 INT, QUIT, SUSP 文字に対応するシグナルを発生する際の
471 入力・出力キューのフラッシュを無効にする。
472 .TP
473 .B TOSTOP
474 バックグラウンドプロセスのプロセスグループで制御端末へ
475 文字を出力しようとしているプロセスに対して
476 .B SIGTTOU
477 シグナルを送る。
478 .TP
479 .B PENDIN
480 (POSIX にはない; Linux では対応していない)
481 次の文字を読み込んだ時、入力キュー中の全文字を再表示する。
482 .RB ( bash (1)
483 は入力行をこのように処理している。)
484 .RB [ _BSD_SOURCE
485
486 .B _SVID_SOURCE
487 が必要]
488 .TP
489 .B IEXTEN
490 実装依存の入力処理を有効にする。
491 このフラグは、特殊文字である EOL2, LNEXT, REPRINT, WERASE や、
492 \fBIUCLC\fP フラグを有効にするために必要である。
493 .PP
494 \fIc_cc\fP 配列は特殊な制御文字を定義している。
495 シンボルの一覧 (初期値) と意味は以下の通り。
496 .TP
497 .B VINTR
498 (003, ETX, Ctrl-C か 0177, DEL, rubout)
499 割り込み文字。
500 .B SIGINT
501 シグナルを送る。
502 .B ISIG
503 がセットされている場合に認識し、入力には渡されない。
504 .TP
505 .B VQUIT
506 (034, FS, Ctrl-\e)
507 終了文字。
508 .B SIGQUIT
509 シグナルを送る。
510 .B ISIG
511 がセットされている場合に認識し、入力には渡されない。
512 .TP
513 .B VERASE
514 (0177, DEL, rubout か 010, BS, Ctrl-H か #)
515 消去文字。これにより、直前の未消去文字を消去する。
516 しかし、EOF や行頭を超えては消去しない。
517 .B ICANON
518 がセットされている場合に認識し、入力には渡されない。
519 .TP
520 .B VKILL
521 (025, NAK, Ctrl-U か Ctrl-X か @)
522 完全消去文字。直前の EOF か行頭以降の全ての入力を消去する。
523 .B ICANON
524 がセットされている場合に認識し、入力には渡されない。
525 .TP
526 .B VEOF
527 (004, EOT, Ctrl-D)
528 ファイル終端文字。
529 より正確には、tty バッファの内容を行末を待たずにユーザープログラムに送る。
530 これが行の最初の文字だった場合、ユーザープログラムの
531 .BR read (2)
532 は 0 を
533 返し、ファイル終端であることを知らせる。
534 .B ICANON
535 がセットされている場合に認識し、入力には渡されない。
536 .TP
537 .B VMIN
538 非カノニカル読み込み時の最小文字数。
539 .TP
540 .B VEOL
541 (0, NUL)
542 追加の行末文字。
543 .B ICANON
544 がセットされている場合に認識する。
545 .TP
546 .B VTIME
547 非カノニカル読み込み時のタイムアウト時間 (1/10 秒単位)。
548 .TP
549 .B VEOL2
550 (POSIX にはない; 0, NUL)
551 追加の行末文字。
552 .B ICANON
553 がセットされている場合に認識する。
554 .TP
555 .B VSWTCH
556 (POSIX にはない; Linux では対応していない; 0, NUL)
557 スイッチ文字 (\fBshl\fP でのみ用いられる)。
558 .TP
559 .B VSTART
560 (021, DC1, Ctrl-Q)
561 開始文字。停止文字で停止した出力を再開する。
562 .B IXON
563 がセットされている場合に認識し、入力には渡されない。
564 .TP
565 .B VSTOP
566 (023, DC3, Ctrl-S)
567 停止文字。開始文字が入力されるまで出力を停止する。
568 .B IXON
569 が設定されている場合に認識し、入力には渡されない。
570 .TP
571 .B VSUSP
572 (032, SUB, Ctrl-Z)
573 中断文字。
574 .B SIGTSTP
575 シグナルを送る。
576 .B ISIG
577 がセットされている場合に認識し、入力には渡されない。
578 .TP
579 .B VDSUSP
580 (POSIX にはない; Linux では対応していない; 031, EM, Ctrl-Y)
581 遅延中断文字。ユーザープログラムから文字が読み込まれた時に
582 .B SIGTSTP
583 シグナルを送る。
584 .B IEXTEN
585
586 .B ISIG
587 がセットされていて、システムがジョブ制御に対応している場合に
588 認識し、入力には渡されない。
589 .TP
590 .B VLNEXT
591 (POSIX にはない; 026, SYN Ctrl-V)
592 リテラル。次の入力文字をエスケープし、特別な意味があっても解釈しない。
593 .B IEXTEN
594 がセットされている場合に認識し、入力には渡されない。
595 .TP
596 .B VWERASE
597 (POSIX にはない; 027, ETB, Ctrl-W)
598 単語消去。
599 .B ICANON
600
601 .B IEXTEN
602 がセットされている場合に認識し、入力には渡されない。
603 .TP
604 .B VREPRINT
605 (POSIX にはない; 022, DC2, Ctrl-R)
606 まだ読み込んでいない文字列を再表示する。
607 .B ICANON
608
609 .B IEXTEN
610 がセットされている場合に認識し、入力には渡されない。
611 .TP
612 .B VDISCARD
613 (POSIX にはない; Linux では対応していない; 017, SI, Ctrl-O)
614 未送信バッファの内容の破棄/保存を切り替える。
615 .B IEXTEN
616 がセットされている場合に認識し、入力には渡されない。
617 .TP
618 .B VSTATUS
619 (POSIX にはない; Linux では対応していない;
620 状態要求: 024, DC4, Ctrl-T)
621 .LP
622 これらのシンボルの示す値は全て異なる。
623 ただし、
624 .BR VTIME ,
625 .B VMIN
626 はそれぞれ
627 .BR VEOL ,
628 .B VEOF
629 と同じ値である。
630 非カノニカルモードでは、特殊文字の意味はタイムアウトの意味に変わる。
631 .B VMIN
632
633 .B VTIME
634 の説明については、下記の非カノニカルモードの説明を参照のこと。
635 .SS "端末の設定の取得と変更"
636 .PP
637 .BR tcgetattr ()
638 は \fIfd\fP に関するパラメータを取得し、\fItermios_p\fP が参照する構
639 造体 \fItermios\fP に設定する。この関数はバックグラウンドプロセスから
640 呼ばれることもあるが、この場合、端末の属性はフォアグラウンドプロセス
641 によって変化することもある。
642 .LP
643 .BR tcsetattr ()
644 は端末に関連したパラメータを設定する (ハードウェアの設定に必要で、ここで
645 設定できないものを除く)。設定には \fItermios_p\fP が参照する
646 \fItermios\fP 構造体を用いる。
647 \fIoptional_actions\fP には変更が有効となるタイミングを設定する:
648 .IP \fBTCSANOW\fP
649 ただちに変更が有効となる。
650 .IP \fBTCSADRAIN\fP
651 .I fd
652 への出力がすべて転送された後に変更が有効になる。この機能は
653 出力に影響するパラメータを変更する時に使用するべきである。
654 .IP \fBTCSAFLUSH\fP
655 パラメータを変更する前に、
656 .I fd
657 への出力がすべて転送され、受信したがまだ読み込んでいないすべての
658 入力が破棄される。
659 .SS "カノニカルモードと非カノニカルモード"
660 .I c_lflag
661
662 .B ICANON
663 フラグの設定により、端末がカノニカルモードで動作するかが決定される。
664 .B ICANON
665 がセットされた場合、カノニカルモード (canonical mode) となり、
666 セットされない場合、非カノニカルモード (noncanonical mode) となる。
667 デフォルトでは、
668 .B ICANON
669 はセットされる。
670
671 カノニカルモードでは、以下のような動作となる。
672 .IP * 2
673 入力は行単位に行われる。
674 行区切り文字が打ち込まれた時点で、入力行が利用可能となる。
675 行区切り文字は NL, EOL, EOL2 および行頭での EOF である。
676 EOF 以外の場合、
677 .BR read (2)
678 が返すバッファに行区切り文字も含められる。
679 .IP * 2
680 行編集が有効となる (ERASE, KILL が効果を持つ。
681 .B IEXTEN
682 フラグが設定された場合は、
683 WERASE, REPRINT, LNEXT も効果を持つ)。
684 .BR read (2)
685 は最大でも 1行の入力しか返さない。
686 .BR read (2)
687 が要求したバイト数が現在の入力行のバイト数よりも少ない場合、
688 要求したのと同じバイト数だけが読み込まれ、
689 残りの文字は次回の
690 .BR read (2)
691 で読み込まれる。
692 .PP
693 非カノニカルモードでは、入力は即座に利用可能となり
694 (ユーザは行区切り文字を打ち込む必要はない)、
695 行編集は無効となる。
696 MIN
697 .RI ( c_cc[VMIN] )
698 と TIME
699 .RI ( c_cc[VTIME] )
700 の設定により、
701 .BR read (2)
702 が完了する条件が決定される。4種類の場合がある:
703 .IP * 2
704 MIN == 0; TIME == 0:
705 データが利用可能であれば、
706 .BR read (2)
707 はすぐに返る。このときの返り値は、そのとき利用可能なバイト数か
708 .BR read (2)
709 の要求バイト数のうち小さい方となる。
710 利用可能なデータがない場合
711 .BR read (2)
712 は 0 を返す。
713 .IP * 2
714 MIN > 0; TIME == 0:
715 .BR read (2)
716 は、利用可能なデータが MIN バイトか要求バイト数のいずれかに達するまで
717 停止する。返り値は、MIN か要求バイト数の小さい方となる。
718 .IP * 2
719 MIN == 0; TIME > 0:
720 TIME はタイマの上限を規定し、単位は 1/10 秒である。
721 タイマは
722 .BR read (2)
723 が呼ばれた時点で開始される。
724 .BR read (2)
725 が返るのは、少なくとも 1バイトのデータが利用可能となった時点、
726 またはタイマが時間切れとなった時点である。
727 入力が全くなくタイマが時間切れとなった場合、
728 .BR read (2)
729 は 0 を返す。
730 .IP * 2
731 MIN > 0; TIME > 0:
732 TIME はタイマの上限を規定し、単位は 1/10 秒である。
733 入力の最初のバイトが利用可能になった後は、
734 新たに 1バイト受信する度にタイマがリセットされる。
735 .BR read (2)
736 が返るのは、MIN バイトか要求バイト数のうち少ない方まで読み出された時点か、
737 バイト間タイマが時間切れとなった時点である。
738 は最初のバイトが利用可能にならないとタイマは開始されないので、
739 少なくとも 1バイトは読み込まれる。
740 .SS "Raw mode"
741 .LP
742 .BR cfmakeraw ()
743 は、端末を昔の Version 7 端末ドライバの
744 "raw" モードのように設定する。
745 入力は文字単位に可能であり、エコーが無効となり、
746 端末の入出力文字に対する特殊処理はすべて無効となる。
747 端末の属性は以下のように設定される:
748 .nf
749
750     termios_p\->c_iflag &= ~(IGNBRK | BRKINT | PARMRK | ISTRIP
751                     | INLCR | IGNCR | ICRNL | IXON);
752     termios_p\->c_oflag &= ~OPOST;
753     termios_p\->c_lflag &= ~(ECHO | ECHONL | ICANON | ISIG | IEXTEN);
754     termios_p\->c_cflag &= ~(CSIZE | PARENB);
755     termios_p\->c_cflag |= CS8;
756 .fi
757 .SS "ライン制御"
758 .LP
759 .BR tcsendbreak ()
760 は端末が非同期のシリアルデータ転送を用いている場合に、
761 連続した0のビット列を一定間隔で転送する。
762 \fIduration\fP が 0 の場合は、0 のビットを 0.25 秒以上、
763 0.5 秒以下の間隔で転送する。 \fIduration\fP が 0 でない場合は、
764 0 のビットを実装依存の時間間隔で送る。
765 .LP
766 端末が非同期のシリアルデータ転送モードでない場合、
767 .BR tcsendbreak ()
768 は何も行わずに戻る。
769 .LP
770 .BR tcdrain ()
771
772 .I fd
773 が行っている出力の転送が完了するまで待つ。
774 .LP
775 .BR tcflush ()
776
777 .I fd
778 が行っているデータの出力でまだ転送されていないもの、あるいは受信し
779 たがまだ入力していないものを破棄する。いずれを行うかは
780 .I queue_selector
781 の値で定める:
782 .\"??nakano flush == discard?
783 .IP \fBTCIFLUSH\fP
784 受信したが読んでいないデータをフラッシュする。
785 .IP \fBTCOFLUSH\fP
786 書いたが送信していないデータをフラッシュする。
787 .IP \fBTCIOFLUSH\fP
788 受信したが読んでいないデータ・書いたが送信していないデータ両方
789 をフラッシュする。
790 .LP
791 .BR tcflow ()
792
793 .I fd
794 で指定されたオブジェクトにおけるデータの送信あるいは受信を一時的に中断する。
795 送信と受信のどちらかは、
796 .IR action で決まる:
797 .IP \fBTCOOFF\fP
798 出力の中断。
799 .IP \fBTCOON\fP
800 中断した出力の再開。
801 .IP \fBTCIOFF\fP
802 STOP 文字の送信。
803 STOP 文字は端末デバイスからシステムへのデータ送信を停止する。
804 .IP \fBTCION\fP
805 START 文字の送信。
806 START 文字は端末デバイスからシステムへのデータ送信を開始する。
807 .LP
808 端末ファイルがオープンされたときのデフォルトでは、
809 入力も出力も中断されていない。
810 .SS "ライン速度"
811 ボーレート関数は \fItermios\fP 構造体中の入出力ボーレートを
812 取得、設定するために提供される。
813 設定された値は
814 .BR tcsetattr ()
815 の呼び出しが成功するまでは有効ではない。
816
817 速度を \fBB0\fP に設定した場合、モデムは停止 (hang up) する。
818 \fBB38400\fP に該当する実際のビットレートは
819 .BR setserial (8)
820
821 変更できる。
822 .LP
823 入力および出力ボーレートは \fItermios\fP 構造体に格納される。
824 .LP
825 .BR cfgetospeed ()
826
827 .I termios_p
828 が示している \fItermios\fP 構造体に格納されている
829 出力ボーレートを返す。
830 .LP
831 .BR cfsetospeed ()
832 は \fItermios_p\fP で示されている \fItermios\fP 構造体中の出力ボーレートを
833 \fIspeed\fP に設定する。値は以下のいずれかでなければならない:
834 .nf
835
836 .ft B
837         B0
838         B50
839         B75
840         B110
841         B134
842         B150
843         B200
844         B300
845         B600
846         B1200
847         B1800
848         B2400
849         B4800
850         B9600
851         B19200
852         B38400
853         B57600
854         B115200
855         B230400
856 .ft P
857
858 .fi
859 0ボー (\fBB0\fP) は接続の中断に用いられる。
860 B0が指定された場合、モデムの制御線は使用されない状態になり、一般にはこれで
861 接続が切断される。
862 \fBCBAUDEX\fP はPOSIX.1で定義されている速度の範囲外 (57600 およびそれ以上)
863 を設定する。すなわち例えば \fBB57600\fP & \fBCBAUDEX\fP は 0 でない。
864 .LP
865 .BR cfgetispeed ()
866 は \fItermios\fP 構造体中の入力ボーレートを返す。
867 .LP
868 .BR cfsetispeed ()
869 は \fItermios\fP 構造体中の入力ボーレートを
870 .I speed
871 に設定する。
872 .I speed
873 には、上述の
874 .BR cfsetospeed ()
875 のボーレート定数 \fBBnnn\fP のいずれか一つを指定しなければならない。
876 入力ボーレートが 0 に設定された場合、入力ボーレートは出力ボーレート
877 と同じ値となる。
878 .LP
879 .BR cfsetspeed ()
880 は 4.4BSD による拡張である。この関数は
881 .BR cfsetispeed ()
882 と同じ引き数をとり、入出力両方の速度を設定する。
883 .SH 返り値
884 .LP
885 .BR cfgetispeed ()
886 は \fItermios\fP 構造体中の入力ボーレートを返す。
887 .LP
888 .BR cfgetospeed ()
889 は \fItermios\fP 構造体中の出力ボーレートを返す。
890 .LP
891 他のすべての関数の戻り値:
892 .IP 0
893 実行成功。
894 .IP \-1
895 実行失敗。
896 .I errno
897 がエラーの種類を示す。
898 .LP
899 .BR tcsetattr ()
900 は \fIなんらかの\fP 変更要求が成功した場合に成功を返すことに注意。
901 従って、複数の変更を行った場合には、引き続いて
902 .BR tcgetattr ()
903 を呼び出して全ての変更が実行されているかを確認する必要があるかもしれない。
904 .SH 準拠
905 .BR tcgetattr (),
906 .BR tcsetattr (),
907 .BR tcsendbreak (),
908 .BR tcdrain (),
909 .BR tcflush (),
910 .BR tcflow (),
911 .BR cfgetispeed (),
912 .BR cfgetospeed (),
913 .BR cfsetispeed (),
914 .BR cfsetospeed ()
915 は POSIX.1-2001 で規定されている。
916
917 .BR cfmakeraw ()
918
919 .BR cfsetspeed ()
920 は非標準だが、BSD では利用可能である。
921 .SH 注意
922 UNIX V7 とその後のいくつかのシステムでは、ボーレートの 14 個のリストである
923 B0, ..., B9600 の後ろに EXTA, EXTB ("External A" と "External B") の 2 つを
924 追加している。
925 多くのシステムではさらに高速なボーレートのためにリストを拡張している。
926 .LP
927 .BR tcsendbreak ()
928 で \fIduration\fP に 0 以外を指定した場合の効果は様々である。
929 SunOS は
930 .IB duration * N
931 秒のブレークを規定している。ここで \fIN\fP は 0.25 以上 0.5 未満である。
932 Linux, AIX, DU, Tru64 は
933 .I duration
934 ミリ秒のブレークを送信する。
935 FreeBSD, NetBSD, HP-UX, MacOS は
936 .I duration
937 の値を無視する。
938 Solaris と UnixWare では、非ゼロの
939 .I duration
940 を指定した
941 .BR tcsendbreak ()
942 の振る舞いは
943 .BR tcdrain ()
944 と同様である。
945 .SH 関連項目
946 .BR stty (1),
947 .BR console_ioctl (4),
948 .BR tty_ioctl (4),
949 .BR setserial (8)