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 .\"*******************************************************************
13 .TH TTY_IOCTL 4 2008\-10\-29 Linux "Linux Programmer's Manual"
15 tty_ioctl \- 端末とシリアルラインの ioctl (入出力制御)
17 \fB#include <termios.h>\fP
19 \fBint ioctl(int \fP\fIfd\fP\fB, int \fP\fIcmd\fP\fB, ...);\fP
21 端末とシリアルポートについての \fBioctl\fP(2) コールは、多くのコマンド引き数を受け付ける。 多くがいろいろな型の 3
22 番目の引き数を必要とする。 ここでは \fIargp\fP または \fIarg\fP と呼ぶ。
24 \fIioctl\fP を使用すると移植性のないプログラムになる。 可能な場合は、 \fBtermios\fP(3) に記述されている POSIX
28 \fBTCGETS struct termios *\fP\fIargp\fP
29 \fItcgetattr(fd, argp)\fP と同じ。
33 \fBTCSETS const struct termios *\fP\fIargp\fP
34 \fItcsetattr(fd, TCSANOW, argp)\fP と同じ。
38 \fBTCSETSW const struct termios *\fP\fIargp\fP
39 \fItcsetattr(fd, TCSADRAIN, argp)\fP と同じ。
41 排出 (drain) を行うための出力バッファの使用を許可し、 現在のシリアルポートの設定を変更する。
43 \fBTCSETSF const struct termios *\fP\fIargp\fP
44 \fItcsetattr(fd, TCSAFLUSH, argp)\fP と同じ。
46 排出 (drain) を行うための出力バッファの使用を許可し、 処理していない入力を破棄して、 現在のシリアルポートの設定を変更する。
48 The following four ioctls are just like \fBTCGETS\fP, \fBTCSETS\fP, \fBTCSETSW\fP,
49 \fBTCSETSF\fP, except that they take a \fIstruct termio\ *\fP instead of a
50 \fIstruct termios\ *\fP.
52 \fBTCGETA struct termio *\fP\fIargp\fP
54 \fBTCSETA const struct termio *\fP\fIargp\fP
56 \fBTCSETAW const struct termio *\fP\fIargp\fP
58 \fBTCSETAF const struct termio *\fP\fIargp\fP
60 端末の \fItermios\fP 構造体はロックすることが可能である。 このロック自体は \fItermios\fP 構造体であり、 0
61 でないビットまたはフィールドはロックされた値を示す。
63 \fBTIOCGLCKTRMIOS struct termios *\fP\fIargp\fP
64 端末の \fItermios\fP 構造体のロック状態を取得する。
66 \fBTIOCSLCKTRMIOS const struct termios *\fP\fIargp\fP
67 端末の \fItermios\fP 構造体のロック状態を設定する。 root のみ (より正確には、 \fBCAP_SYS_ADMIN\fP
68 ケーパビリティを持つプロセス) がこれを実行できる。
70 ウィンドウサイズはカーネル内に保持されるが、 カーネルによって使用されない (仮想コンソールの場合は例外であり、新しいフォントを読み込んだ場合など、
71 仮想端末のサイズが変更された場合、カーネルはウィンドウサイズを更新する)。
73 以下の定数と構造体は \fI<sys/ioctl.h>\fP で定義されている。
75 \fBTIOCGWINSZ struct winsize *\fP\fIargp\fP
78 \fBTIOCSWINSZ const struct winsize *\fP\fIargp\fP
81 これらの ioctl で使用される構造体は、以下のように定義される。
86 unsigned short ws_row;
87 unsigned short ws_col;
88 unsigned short ws_xpixel; /* 未使用 */
89 unsigned short ws_ypixel; /* 未使用 */
94 ウィンドウサイズが変更された場合、 フォアグラウンドプロセスグループに \fBSIGWINCH\fP シグナルが送られる。
97 \fBTCSBRK int \fP\fIarg\fP
98 \fItcsendbreak(fd, arg)\fP と同じ。
100 端末が非同期シリアルデータ転送を使用しており、 \fIarg\fP が 0 の場合、0.25 から 0.5 秒の間に break (0
101 のビット列のストリーム) が送信される。 端末が非同期シリアルデータ転送を使用している場合、 break が送信されるか、この関数は何もせずに返る。
102 \fIarg\fP が 0 以外の場合、何が起こるか分からない。
104 (SVr4, UnixWare, Solaris, Linux は、 \fItcsendbreak(fd,arg)\fP の \fIarg\fP が 0
105 以外の場合、 \fItcdrain(fd)\fP のように扱う。 SunOS は \fIarg\fP を倍数として扱い、ビットのストリームを \fIarg\fP
106 回送信する。 \fIarg\fP が 0 の場合も同じ。 DG/UX と AIX は、(0 以外の場合) \fIarg\fP をミリ秒単位の時間間隔として扱う。
107 HP\-UX は \fIarg\fP を無視する。)
109 \fBTCSBRKP int \fP\fIarg\fP
110 いわゆる「POSIX 版」の \fBTCSBRK\fP である。 これは 0 以外の \fIarg\fP を 1/10 秒単位の時間間隔として扱う。 またドライバが
111 break をサポートしていない場合は、何もしない。
114 break をオンにする。 つまり 0 のビット列の送信を開始する。
117 break をオフにする。 つまり 0 のビット列の送信を停止する。
120 \fBTCXONC int \fP\fIarg\fP
121 \fItcflow(fd, arg)\fP と同じ。
123 \fBtcflow\fP(3) の引き数 \fBTCOOFF\fP, \fBTCOON\fP, \fBTCIOFF\fP, \fBTCION\fP を参照すること。
124 .SS "バッファのカウントと書き出し (flush)"
126 \fBFIONREAD int *\fP\fIargp\fP
129 \fBTIOCINQ int *\fP\fIargp\fP
132 \fBTIOCOUTQ int *\fP\fIargp\fP
135 \fBTCFLSH int \fP\fIarg\fP
136 \fItcflush(fd, arg)\fP と同じ。
138 \fBtcflush\fP(3) の引き数 \fBTCIFLUSH\fP, \fBTCOFLUSH\fP, \fBTCIOFLUSH\fP を参照すること。
141 \fBTIOCSTI const char *\fP\fIargp\fP
146 \fI/dev/console\fP または \fI/dev/tty0\fP に送られる出力を、指定された端末リダイレクトする。 指定された端末が疑似端末
147 (pseudoterminal) のマスタの場合、 出力はスレーブに送られる。 バージョン 2.6.10 より前の Linux
148 では、出力がまだリダイレクトされて いなければ、誰でもリダイレクトを行うことができる。 バージョン 2.6.10 以降では、root
149 (\fBCAP_SYS_ADMIN\fP ケーパビリティを持つプロセス) だけがリダイレクトを行うことができる。 出力がすでにリダイレクトされている場合は
150 \fBEBUSY\fP が返されるが、 \fI/dev/console\fP か \fI/dev/tty0\fP を指している \fIfd\fP に対してこの ioctl
151 を使用することで、リダイレクトを止めることができる。
154 \fBTIOCSCTTY int \fP\fIarg\fP
155 指定された端末を呼び出し元のプロセスの制御端末にする。 呼び出し元のプロセスはセッションリーダでなければならず、
156 かつ既に制御端末を持っていてはならない。 この端末が既に他のセッショングループの制御端末である場合、 ioctl は \fBEPERM\fP
157 で失敗する。ただし呼び出したユーザが root で (より正確には \fBCAP_SYS_ADMIN\fP ケーパビリティを持っていて)、かつ \fIarg\fP
158 が 1 である場合を除く。 この場合、端末は盗まれ (stolen)、 この端末を制御端末としていた全てのプロセスは端末を失う。
161 指定された端末が呼び出し元のプロセスの制御端末である場合、 この制御端末を放棄する。 プロセスがセッションリーダの場合、
162 フォアグラウンドプロセスグループに \fBSIGHUP\fP と \fBSIGCONT\fP を送り、カレントセッションの全てのプロセスは制御端末を失う。
163 .SS "グループ ID とセッション ID の処理"
165 \fBTIOCGPGRP pid_t *\fP\fIargp\fP
166 成功した場合、 \fI*argp = tcgetpgrp(fd)\fP と同じ。
168 この端末上のフォアグラウンドプロセスのプロセスグループ ID を取得する。
170 \fBTIOCSPGRP const pid_t *\fP\fIargp\fP
171 \fItcsetpgrp(fd, *argp)\fP と同じ。
173 この端末のフォアグラウンドプロセスのグループ ID を設定する。
175 \fBTIOCGSID pid_t *\fP\fIargp\fP
176 指定された端末のセッション ID を取得する。 端末がマスタ疑似端末または制御端末でない場合は、 \fBENOTTY\fP で失敗する。 奇妙だ。
180 端末を排他モードにする。 端末に対して、これ以降の \fBopen\fP(2) 操作を禁止する。 (root 以外の場合、つまり
181 \fBCAP_SYS_ADMIN\fP ケーパビリティを持たないプロセスの場合、これ以降の \fBopen\fP(2) は \fBEBUSY\fP で失敗する。)
185 .SS "ライン制御 (line discipline)"
187 \fBTIOCGETD int *\fP\fIargp\fP
190 \fBTIOCSETD const int *\fP\fIargp\fP
194 \fBTIOCPKT const int *\fP\fIargp\fP
195 パケットモードを有効 (*\fIargp\fP が 0 以外の場合) または無効にする。 疑似端末のマスタ側にのみ適用できる (それ以外の場合は
196 \fBENOTTY\fP を返す)。 パケットモードでは、その後に実行される \fBread\fP(2) は、値が 0 以外の 1
197 つの制御バイトを含むパケットか、 値が 0 の 1 バイト (\(aq\e0\(aq) に疑似端末のスレーブ側で書き込まれた
198 データが続くパケットを返す。 最初のバイトが \fBTIOCPKT_DATA\fP (0) でない場合、以下のビットの 1 つ以上を OR したものである:
201 TIOCPKT_FLUSHREAD 端末の読み込みキューがフラッシュ (flush) される。
202 TIOCPKT_FLUSHWRITE 端末の書き出しキューがフラッシュされる。
203 TIOCPKT_STOP 端末への出力が停止される。
204 TIOCPKT_START 端末への出力が再開される。
205 TIOCPKT_DOSTOP 開始文字と終了文字が \fB^S\fP/\fB^Q\fP である。
206 TIOCPKT_NOSTOP 開始文字と終了文字が \fB^S\fP/\fB^Q\fP でない。
209 このモードが使われている場合、 制御状態情報の存在がマスタ側から読み込めるかは、 例外的な条件で \fBselect\fP(2)
212 このモードは \fBrlogin\fP(1) と \fBrlogind\fP(8) で使われ、リモートエコーのリモートログインと ローカルでの
213 \fB^S\fP/\fB^Q\fP フロー制御のリモートログインを実装している。
215 BSD の ioctl である \fBTIOCSTOP\fP, \fBTIOCSTART\fP, \fBTIOCUCNTL\fP, \fBTIOCREMOTE\fP
219 \fBTIOCMGET int *\fP\fIargp\fP
222 \fBTIOCMSET const int *\fP\fIargp\fP
225 \fBTIOCMBIC const int *\fP\fIargp\fP
228 \fBTIOCMBIS const int *\fP\fIargp\fP
231 これらの 4 つの ioctl で使われるビットは以下の通り:
234 TIOCM_LE DSR (data set ready/line enable)
235 TIOCM_DTR DTR (data terminal ready)
236 TIOCM_RTS RTS (request to send)
237 TIOCM_ST Secondary TXD (transmit)
238 TIOCM_SR Secondary RXD (receive)
239 TIOCM_CTS CTS (clear to send)
240 TIOCM_CAR DCD (data carrier detect)
241 TIOCM_CD TIOCM_CAR を参照。
243 TIOCM_RI TIOCM_RNG を参照。
244 TIOCM_DSR DSR (data set ready)
248 \fBTIOCGSOFTCAR int *\fP\fIargp\fP
249 ("ソフトウェアキャリアフラグの取得") \fItermios\fP 構造体の c_cflag フィールドの \fBCLOCAL\fP フラグの状態を取得する。
251 \fBTIOCSSOFTCAR const int *\fP\fIargp\fP
252 ("ソフトウェアキャリアフラグの設定") *\fIargp\fP が 0 以外の場合、 \fItermios\fP 構造体の \fBCLOCAL\fP
253 フラグを設定する。 0 の場合はクリアする。
255 ラインの \fBCLOCAL\fP フラグがオフの場合、 ハードウェアキャリア検出 (hardware carrier detect, DCD)
256 シグナルが重要であり、 \fBO_NONBLOCK\fP フラグが指定されない限り、対応する端末の \fBopen\fP(2) は DCD
257 が示されるまでブロックされる。 \fBCLOCAL\fP が設定されている場合、 ラインは常に DCD が示されているかのように動作する。
258 ソフトウェアキャリアフラグは、ローカルデバイスでは通常はオンになっており、 モデムのラインではオフになっている。
259 .SS "Linux 固有の ioctl"
260 \fBTIOCLINUX\fP ioctl については、 \fBconsole_ioctl\fP(4) を参照すること。
262 \fB#include <linux/tty.h>\fP
264 \fBTIOCTTYGSTRUCT struct tty_struct *\fP\fIargp\fP
266 .\" .SS "Serial info"
267 .\" .BR "#include <linux/serial.h>"
270 .\" .BI "TIOCGSERIAL struct serial_struct *" argp
273 .\" .BI "TIOCSSERIAL const struct serial_struct *" argp
275 \fIfd\fP に対応する \fItty_struct\fP を取得する。
277 \fBioctl\fP(2) システムコールは、成功した場合は 0 を返す。 エラーの場合は \-1 を返し、 \fIerrno\fP を適切に設定する。
292 シリアルポートの DTR の状態をチェックする。
297 #include <sys/ioctl.h>
304 fd = open("/dev/ttyS0", O_RDONLY);
305 ioctl(fd, TIOCMGET, &serial);
306 if (serial & TIOCM_DTR)
307 puts("TIOCM_DTR が設定されていない。");
309 puts("TIOCM_DTR が設定されている。");
315 .\" FIONBIO const int *
318 .\" FIOASYNC const int *
320 .\" TIOCSERCONFIG void
321 .\" TIOCSERGWILD int *
322 .\" TIOCSERSWILD const int *
323 .\" TIOCSERGSTRUCT struct async_struct *
324 .\" TIOCSERGETLSR int *
325 .\" TIOCSERGETMULTI struct serial_multiport_struct *
326 .\" TIOCSERSETMULTI const struct serial_multiport_struct *
327 .\" TIOCGSERIAL, TIOCSSERIAL (see above)
328 \fBioctl\fP(2), \fBtermios\fP(3), \fBconsole_ioctl\fP(4), \fBpty\fP(7)
330 この man ページは Linux \fIman\-pages\fP プロジェクトのリリース 3.52 の一部
331 である。プロジェクトの説明とバグ報告に関する情報は
332 http://www.kernel.org/doc/man\-pages/ に書かれている。