1 .\" Copyright 2002 Walter Harms <walter.harms@informatik.uni-oldenburg.de>
2 .\" and Andries Brouwer <aeb@cwi.nl>.
4 .\" %%%LICENSE_START(GPL_NOVERSION_ONELINE)
5 .\" Distributed under GPL
8 .\"*******************************************************************
10 .\" This file was generated with po4a. Translate the source file.
12 .\"*******************************************************************
14 .\" Japanese Version Copyright (c) 2004 Yuichi SATO
15 .\" all rights reserved.
16 .\" Translated Sat Oct 16 06:08:24 JST 2004
17 .\" by Yuichi SATO <ysato444@yahoo.co.jp>
19 .TH TTY_IOCTL 4 2008\-10\-29 Linux "Linux Programmer's Manual"
21 tty_ioctl \- 端末とシリアルラインの ioctl (入出力制御)
23 \fB#include <termios.h>\fP
25 \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, ...);\fP
27 端末とシリアルポートについての \fBioctl\fP(2) コールは、多くのコマンド引き数を受け付ける。 多くがいろいろな型の 3
28 番目の引き数を必要とする。 ここでは \fIargp\fP または \fIarg\fP と呼ぶ。
30 \fIioctl\fP を使用すると移植性のないプログラムになる。 可能な場合は、 \fBtermios\fP(3) に記述されている POSIX
34 \fBTCGETS struct termios *\fP\fIargp\fP
35 \fItcgetattr(fd, argp)\fP と同じ。
39 \fBTCSETS const struct termios *\fP\fIargp\fP
40 \fItcsetattr(fd, TCSANOW, argp)\fP と同じ。
44 \fBTCSETSW const struct termios *\fP\fIargp\fP
45 \fItcsetattr(fd, TCSADRAIN, argp)\fP と同じ。
47 排出 (drain) を行うための出力バッファの使用を許可し、 現在のシリアルポートの設定を変更する。
49 \fBTCSETSF const struct termios *\fP\fIargp\fP
50 \fItcsetattr(fd, TCSAFLUSH, argp)\fP と同じ。
52 排出 (drain) を行うための出力バッファの使用を許可し、 処理していない入力を破棄して、 現在のシリアルポートの設定を変更する。
54 以下の 4 つの ioctl は \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP, \fBTCSETSF\fP と似ている。 ただし、
55 \fIstruct termios\ *\fP の代わりに \fIstruct termio\ *\fP を取る。
57 \fBTCGETA struct termio *\fP\fIargp\fP
59 \fBTCSETA const struct termio *\fP\fIargp\fP
61 \fBTCSETAW const struct termio *\fP\fIargp\fP
63 \fBTCSETAF const struct termio *\fP\fIargp\fP
65 端末の \fItermios\fP 構造体はロックすることが可能である。 このロック自体は \fItermios\fP 構造体であり、 0
66 でないビットまたはフィールドはロックされた値を示す。
68 \fBTIOCGLCKTRMIOS struct termios *\fP\fIargp\fP
69 端末の \fItermios\fP 構造体のロック状態を取得する。
71 \fBTIOCSLCKTRMIOS const struct termios *\fP\fIargp\fP
72 端末の \fItermios\fP 構造体のロック状態を設定する。 root のみ (より正確には、 \fBCAP_SYS_ADMIN\fP
73 ケーパビリティを持つプロセス) がこれを実行できる。
75 ウィンドウサイズはカーネル内に保持されるが、 カーネルによって使用されない (仮想コンソールの場合は例外であり、新しいフォントを読み込んだ場合など、
76 仮想端末のサイズが変更された場合、カーネルはウィンドウサイズを更新する)。
78 以下の定数と構造体は \fI<sys/ioctl.h>\fP で定義されている。
80 \fBTIOCGWINSZ struct winsize *\fP\fIargp\fP
83 \fBTIOCSWINSZ const struct winsize *\fP\fIargp\fP
86 これらの ioctl で使用される構造体は、以下のように定義される。
91 unsigned short ws_row;
92 unsigned short ws_col;
93 unsigned short ws_xpixel; /* 未使用 */
94 unsigned short ws_ypixel; /* 未使用 */
99 ウィンドウサイズが変更された場合、 フォアグラウンドプロセスグループに \fBSIGWINCH\fP シグナルが送られる。
102 \fBTCSBRK int \fP\fIarg\fP
103 \fItcsendbreak(fd, arg)\fP と同じ。
105 端末が非同期シリアルデータ転送を使用しており、 \fIarg\fP が 0 の場合、0.25 から 0.5 秒の間に break (0
106 のビット列のストリーム) が送信される。 端末が非同期シリアルデータ転送を使用している場合、 break が送信されるか、この関数は何もせずに返る。
107 \fIarg\fP が 0 以外の場合、何が起こるか分からない。
109 (SVr4, UnixWare, Solaris, Linux は、 \fItcsendbreak(fd,arg)\fP の \fIarg\fP が 0
110 以外の場合、 \fItcdrain(fd)\fP のように扱う。 SunOS は \fIarg\fP を倍数として扱い、ビットのストリームを \fIarg\fP
111 回送信する。 \fIarg\fP が 0 の場合も同じ。 DG/UX と AIX は、(0 以外の場合) \fIarg\fP をミリ秒単位の時間間隔として扱う。
112 HP\-UX は \fIarg\fP を無視する。)
114 \fBTCSBRKP int \fP\fIarg\fP
115 いわゆる「POSIX 版」の \fBTCSBRK\fP である。 これは 0 以外の \fIarg\fP を 1/10 秒単位の時間間隔として扱う。 またドライバが
116 break をサポートしていない場合は、何もしない。
119 break をオンにする。 つまり 0 のビット列の送信を開始する。
122 break をオフにする。 つまり 0 のビット列の送信を停止する。
125 \fBTCXONC int \fP\fIarg\fP
126 \fItcflow(fd, arg)\fP と同じ。
128 \fBtcflow\fP(3) の引き数 \fBTCOOFF\fP, \fBTCOON\fP, \fBTCIOFF\fP, \fBTCION\fP を参照すること。
129 .SS "バッファのカウントと書き出し (flush)"
131 \fBFIONREAD int *\fP\fIargp\fP
134 \fBTIOCINQ int *\fP\fIargp\fP
137 \fBTIOCOUTQ int *\fP\fIargp\fP
140 \fBTCFLSH int \fP\fIarg\fP
141 \fItcflush(fd, arg)\fP と同じ。
143 \fBtcflush\fP(3) の引き数 \fBTCIFLUSH\fP, \fBTCOFLUSH\fP, \fBTCIOFLUSH\fP を参照すること。
146 \fBTIOCSTI const char *\fP\fIargp\fP
151 \fI/dev/console\fP または \fI/dev/tty0\fP に送られる出力を、指定された端末リダイレクトする。 指定された端末が疑似端末
152 (pseudoterminal) のマスタの場合、 出力はスレーブに送られる。 バージョン 2.6.10 より前の Linux
153 では、出力がまだリダイレクトされて いなければ、誰でもリダイレクトを行うことができる。 バージョン 2.6.10 以降では、root
154 (\fBCAP_SYS_ADMIN\fP ケーパビリティを持つプロセス) だけがリダイレクトを行うことができる。 出力がすでにリダイレクトされている場合は
155 \fBEBUSY\fP が返されるが、 \fI/dev/console\fP か \fI/dev/tty0\fP を指している \fIfd\fP に対してこの ioctl
156 を使用することで、リダイレクトを止めることができる。
159 \fBTIOCSCTTY int \fP\fIarg\fP
160 指定された端末を呼び出し元のプロセスの制御端末にする。 呼び出し元のプロセスはセッションリーダでなければならず、
161 かつ既に制御端末を持っていてはならない。 この端末が既に他のセッショングループの制御端末である場合、 ioctl は \fBEPERM\fP
162 で失敗する。ただし呼び出したユーザが root で (より正確には \fBCAP_SYS_ADMIN\fP ケーパビリティを持っていて)、かつ \fIarg\fP
163 が 1 である場合を除く。 この場合、端末は盗まれ (stolen)、 この端末を制御端末としていた全てのプロセスは端末を失う。
166 指定された端末が呼び出し元のプロセスの制御端末である場合、 この制御端末を放棄する。 プロセスがセッションリーダの場合、
167 フォアグラウンドプロセスグループに \fBSIGHUP\fP と \fBSIGCONT\fP を送り、カレントセッションの全てのプロセスは制御端末を失う。
168 .SS "グループ ID とセッション ID の処理"
170 \fBTIOCGPGRP pid_t *\fP\fIargp\fP
171 成功した場合、 \fI*argp = tcgetpgrp(fd)\fP と同じ。
173 この端末上のフォアグラウンドプロセスのプロセスグループ ID を取得する。
175 \fBTIOCSPGRP const pid_t *\fP\fIargp\fP
176 \fItcsetpgrp(fd, *argp)\fP と同じ。
178 この端末のフォアグラウンドプロセスのグループ ID を設定する。
180 \fBTIOCGSID pid_t *\fP\fIargp\fP
181 指定された端末のセッション ID を取得する。 端末がマスタ疑似端末または制御端末でない場合は、 \fBENOTTY\fP で失敗する。 奇妙だ。
185 端末を排他モードにする。 端末に対して、これ以降の \fBopen\fP(2) 操作を禁止する。 (root 以外の場合、つまり
186 \fBCAP_SYS_ADMIN\fP ケーパビリティを持たないプロセスの場合、これ以降の \fBopen\fP(2) は \fBEBUSY\fP で失敗する。)
190 .SS "ライン制御 (line discipline)"
192 \fBTIOCGETD int *\fP\fIargp\fP
195 \fBTIOCSETD const int *\fP\fIargp\fP
199 \fBTIOCPKT const int *\fP\fIargp\fP
200 パケットモードを有効 (*\fIargp\fP が 0 以外の場合) または無効にする。 疑似端末のマスタ側にのみ適用できる (それ以外の場合は
201 \fBENOTTY\fP を返す)。 パケットモードでは、その後に実行される \fBread\fP(2) は、値が 0 以外の 1
202 つの制御バイトを含むパケットか、 値が 0 の 1 バイト (\(aq\e0\(aq) に疑似端末のスレーブ側で書き込まれた
203 データが続くパケットを返す。 最初のバイトが \fBTIOCPKT_DATA\fP (0) でない場合、以下のビットの 1 つ以上を OR したものである:
206 TIOCPKT_FLUSHREAD 端末の読み込みキューがフラッシュ (flush) される。
207 TIOCPKT_FLUSHWRITE 端末の書き出しキューがフラッシュされる。
208 TIOCPKT_STOP 端末への出力が停止される。
209 TIOCPKT_START 端末への出力が再開される。
210 TIOCPKT_DOSTOP 開始文字と終了文字が \fB^S\fP/\fB^Q\fP である。
211 TIOCPKT_NOSTOP 開始文字と終了文字が \fB^S\fP/\fB^Q\fP でない。
214 このモードが使われている場合、 制御状態情報の存在がマスタ側から読み込めるかは、 例外的な条件で \fBselect\fP(2)
217 このモードは \fBrlogin\fP(1) と \fBrlogind\fP(8) で使われ、リモートエコーのリモートログインと ローカルでの
218 \fB^S\fP/\fB^Q\fP フロー制御のリモートログインを実装している。
220 BSD の ioctl である \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP, \fBTIOCREMOTE\fP
224 \fBTIOCMGET int *\fP\fIargp\fP
227 \fBTIOCMSET const int *\fP\fIargp\fP
230 \fBTIOCMBIC const int *\fP\fIargp\fP
233 \fBTIOCMBIS const int *\fP\fIargp\fP
236 これらの 4 つの ioctl で使われるビットは以下の通り:
239 TIOCM_LE DSR (data set ready/line enable)
240 TIOCM_DTR DTR (data terminal ready)
241 TIOCM_RTS RTS (request to send)
242 TIOCM_ST Secondary TXD (transmit)
243 TIOCM_SR Secondary RXD (receive)
244 TIOCM_CTS CTS (clear to send)
245 TIOCM_CAR DCD (data carrier detect)
246 TIOCM_CD TIOCM_CAR を参照。
248 TIOCM_RI TIOCM_RNG を参照。
249 TIOCM_DSR DSR (data set ready)
253 \fBTIOCGSOFTCAR int *\fP\fIargp\fP
254 ("ソフトウェアキャリアフラグの取得") \fItermios\fP 構造体の c_cflag フィールドの \fBCLOCAL\fP フラグの状態を取得する。
256 \fBTIOCSSOFTCAR const int *\fP\fIargp\fP
257 ("ソフトウェアキャリアフラグの設定") *\fIargp\fP が 0 以外の場合、 \fItermios\fP 構造体の \fBCLOCAL\fP
258 フラグを設定する。 0 の場合はクリアする。
260 ラインの \fBCLOCAL\fP フラグがオフの場合、 ハードウェアキャリア検出 (hardware carrier detect, DCD)
261 シグナルが重要であり、 \fBO_NONBLOCK\fP フラグが指定されない限り、対応する端末の \fBopen\fP(2) は DCD
262 が示されるまでブロックされる。 \fBCLOCAL\fP が設定されている場合、 ラインは常に DCD が示されているかのように動作する。
263 ソフトウェアキャリアフラグは、ローカルデバイスでは通常はオンになっており、 モデムのラインではオフになっている。
264 .SS "Linux 固有の ioctl"
265 \fBTIOCLINUX\fP ioctl については、 \fBconsole_ioctl\fP(4) を参照すること。
267 \fB#include <linux/tty.h>\fP
269 \fBTIOCTTYGSTRUCT struct tty_struct *\fP\fIargp\fP
271 .\" .SS "Serial info"
272 .\" .BR "#include <linux/serial.h>"
275 .\" .BI "TIOCGSERIAL struct serial_struct *" argp
278 .\" .BI "TIOCSSERIAL const struct serial_struct *" argp
280 \fIfd\fP に対応する \fItty_struct\fP を取得する。
282 \fBioctl\fP(2) システムコールは、成功した場合は 0 を返す。 エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
297 シリアルポートの DTR の状態をチェックする。
302 #include <sys/ioctl.h>
309 fd = open("/dev/ttyS0", O_RDONLY);
310 ioctl(fd, TIOCMGET, &serial);
311 if (serial & TIOCM_DTR)
312 puts("TIOCM_DTR が設定されていない。");
314 puts("TIOCM_DTR が設定されている。");
320 .\" FIONBIO const int *
323 .\" FIOASYNC const int *
325 .\" TIOCSERCONFIG void
326 .\" TIOCSERGWILD int *
327 .\" TIOCSERSWILD const int *
328 .\" TIOCSERGSTRUCT struct async_struct *
329 .\" TIOCSERGETLSR int *
330 .\" TIOCSERGETMULTI struct serial_multiport_struct *
331 .\" TIOCSERSETMULTI const struct serial_multiport_struct *
332 .\" TIOCGSERIAL, TIOCSSERIAL (see above)
333 \fBioctl\fP(2), \fBtermios\fP(3), \fBconsole_ioctl\fP(4), \fBpty\fP(7)
335 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.53 の一部
336 である。プロジェクトの説明とバグ報告に関する情報は
337 http://www.kernel.org/doc/man\-pages/ に書かれている。