File: tty_ioctl.4

package info (click to toggle)
manpages-ja 0.5.0.0.20080615-1
  • links: PTS
  • area: main
  • in suites: lenny
  • size: 20,508 kB
  • ctags: 1
  • sloc: sh: 13,690; perl: 157; makefile: 114
file content (482 lines) | stat: -rw-r--r-- 11,371 bytes parent folder | download
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
252
253
254
255
256
257
258
259
260
261
262
263
264
265
266
267
268
269
270
271
272
273
274
275
276
277
278
279
280
281
282
283
284
285
286
287
288
289
290
291
292
293
294
295
296
297
298
299
300
301
302
303
304
305
306
307
308
309
310
311
312
313
314
315
316
317
318
319
320
321
322
323
324
325
326
327
328
329
330
331
332
333
334
335
336
337
338
339
340
341
342
343
344
345
346
347
348
349
350
351
352
353
354
355
356
357
358
359
360
361
362
363
364
365
366
367
368
369
370
371
372
373
374
375
376
377
378
379
380
381
382
383
384
385
386
387
388
389
390
391
392
393
394
395
396
397
398
399
400
401
402
403
404
405
406
407
408
409
410
411
412
413
414
415
416
417
418
419
420
421
422
423
424
425
426
427
428
429
430
431
432
433
434
435
436
437
438
439
440
441
442
443
444
445
446
447
448
449
450
451
452
453
454
455
456
457
458
459
460
461
462
463
464
465
466
467
468
469
470
471
472
473
474
475
476
477
478
479
480
481
482
.\" Copyright 2002 Walter Harms <walter.harms@informatik.uni-oldenburg.de>
.\" and Andries Brouwer <aeb@cwi.nl>.
.\" Distributed under GPL.
.\"
.\" Japanese Version Copyright (c) 2004 Yuichi SATO
.\"         all rights reserved.
.\" Translated Sat Oct 16 06:08:24 JST 2004
.\"         by Yuichi SATO <ysato444@yahoo.co.jp>
.\"
.TH TTY_IOCTL 4 2002-12-29 "Linux" "Linux Programmer's Manual"
.SH ̾
tty ioctl \- üȥꥢ饤 ioctl ()
.SH 
.B "#include <termios.h>"
.sp
.BI "int ioctl(int " fd ", int " cmd ", ...);"
.SH 
üȥꥢݡȤˤĤƤ
.BR ioctl ()
ϡ¿Υޥɰդ롣
¿ʷ 3 ܤΰɬפȤ롣
Ǥ \fIargp\fP ޤ \fIarg\fP ȸƤ֡
.LP
.I ioctl
ѤȰܿΤʤץˤʤ롣
ǽʾϡ
.BR termios (3)
˵ҤƤ POSIX 󥿥եȤȡ
.SS ü°μ
.TP
.BI "TCGETS	struct termios *" argp
.I "tcgetattr(fd, argp)"
Ʊ
.br
ߤΥꥢݡȤ롣
.TP
.BI "TCSETS	const struct termios *" argp
.I "tcsetattr(fd, TCSANOW, argp)"
Ʊ
.br
ߤΥꥢݡȤѹ롣
.TP
.BI "TCSETSW	const struct termios *" argp
.I "tcsetattr(fd, TCSADRAIN, argp)"
Ʊ
.br
ӽ (drain) ԤνϥХåեλѤĤ
ߤΥꥢݡȤѹ롣
.TP
.BI "TCSETSF	const struct termios *" argp
.I "tcsetattr(fd, TCSAFLUSH, argp)"
Ʊ
.br
ӽ (drain) ԤνϥХåեλѤĤ
ƤʤϤ˴ơ
ߤΥꥢݡȤѹ롣
.LP
ʲ 4 Ĥ ioctl 
.BR TCGETS ,
.BR TCSETS ,
.BR TCSETSW ,
.B TCSETSF
ȻƤ롣

.I "struct termios *"

.I "struct termio *"
.TP
.BI "TCGETA	struct termio *" argp
.TP
.BI "TCSETA	const struct termio *" argp
.TP
.BI "TCSETAW	const struct termio *" argp
.TP
.BI "TCSETAF	const struct termio *" argp
.SS "termios ¤ΤΥå"
ü termios ¤Τϥå뤳ȤǽǤ롣
ΥåΤ termios ¤ΤǤꡢ
0 ǤʤӥåȤޤϥեɤϥå줿ͤ򼨤
.TP
.BI "TIOCGLCKTRMIOS	struct termios *" argp
ü termios ¤ΤΥå֤롣
.TP
.BI "TIOCSLCKTRMIOS	const struct termios *" argp
ü termios ¤ΤΥå֤ꤹ롣
root Τߤ¹ԤǤ롣
.SS ɥμ
ɥϥͥݻ뤬
ͥˤäƻѤʤ
(ۥ󥽡ξ㳰ǤꡢեȤɤ߹ʤɡ
üΥѹ줿硢ͥϥɥ򹹿)
.TP
.BI "TIOCGWINSZ	struct winsize *" argp
ɥ롣
.TP
.BI "TIOCSWINSZ	const struct winsize *" argp
ɥꤹ롣
.LP
 ioctl ǻѤ빽¤ΤϡʲΤ褦롣

.in +4n
.nf
struct winsize {
    unsigned short ws_row;
    unsigned short ws_col;
    unsigned short ws_xpixel;   /* ̤ */
    unsigned short ws_ypixel;   /* ̤ */
};
.fi
.in

ɥѹ줿硢
ե饦ɥץ롼פ
.B SIGWINCH
ʥ뤬롣
.SS "break "
.TP
.BI "TCSBRK	int " arg
.I "tcsendbreak(fd, arg)"
Ʊ
.br
üƱꥢǡžѤƤꡢ
.I arg
 0 ξ硢0.25  0.5 äδ֤
break (0 ΥӥåΥȥ꡼) 롣
üƱꥢǡžѤƤ硢
break 뤫δؿϲ⤻֤롣
.I arg
 0 ʳξ硢뤫ʬʤ

(SVr4, UnixWare, Solaris, Linux ϡ
.I "tcsendbreak(fd,arg)"

.I arg
 0 ʳξ硢
.I "tcdrain(fd)"
Τ褦˰
SunOS 
.I arg
ܿȤưӥåȤΥȥ꡼
.I arg
.I arg
 0 ξƱ
DG/UX  AIX ϡ(0 ʳξ)
.I arg
ߥñ̤λֳִ֤Ȥư
HP-UX 
.I arg
̵뤹롣)
.TP
.BI "TCSBRKP	int " arg
POSIX ǡפ
.B TCSBRK
Ǥ롣
 0 ʳ
.I arg
 1/10 ñ̤λֳִ֤Ȥư
ޤɥ饤Ф break 򥵥ݡȤƤʤϡ⤷ʤ
.TP
.B "TIOCSBRK	void"
break 򥪥ˤ롣
Ĥޤ 0 Υӥå򳫻Ϥ롣
.TP
.B "TIOCCBRK	void"
break 򥪥դˤ롣
Ĥޤ 0 Υӥåߤ롣
.SS եȥե
.TP
.BI "TCXONC	int " arg
.I "tcflow(fd, arg)"
Ʊ
.br
.BR tcflow (3)
ΰ
.BR TCOOFF ,
.BR TCOON ,
.BR TCIOFF ,
.B TCION
򻲾Ȥ뤳ȡ
.SS "ХåեΥȤȽ񤭽Ф (flush)"
.TP
.BI "FIONREAD	int *" argp
ϥХåեˤХȿ롣
.TP
.BI "TIOCINQ	int *" argp
.B FIONREAD
Ʊ
.TP
.BI "TIOCOUTQ	int *" argp
ϥХåեˤХȿ롣
.TP
.BI "TCFLSH	int " arg
.I "tcflush(fd, arg)"
Ʊ
.br
.BR tcflush (3)
ΰ
.BR TCIFLUSH ,
.BR TCOFLUSH ,
.B TCIOFLUSH
򻲾Ȥ뤳ȡ
.SS Ϥε
.TP
.BI "TIOCSTI	const char *" argp
ꤵ줿ХȤϥ塼롣
.SS 󥽡ϤΥ쥯
.TP
.B "TIOCCONS	void"
.I /dev/console
ޤ
.I /dev/tty0
Ϥ򡢻ꤵ줿ü (tty) ˥쥯Ȥ롣
ꤵ줿üü (pty) Υޥξ硢Ϥϥ졼֤롣
Ϥޤ쥯ȤƤʤС
ïǤ쥯ȤԤȤǤ롣
˥쥯ȤƤ
.B EBUSY
֤뤬
root ϡ
.I /dev/console
ޤ
.I /dev/tty0
ؤ
.I fd
ФƤ ioctl Ѥ뤳Ȥˤꡢ쥯Ȥߤ뤳ȤǤ롣
.SS "ü"
.TP
.BI "TIOCSCTTY	int " arg
ꤵ줿üƤӽФΥץüˤ롣
ƤӽФΥץϥå꡼ǤʤФʤ餺
ĴüäƤƤϤʤʤ
ü¾Υå󥰥롼פüǤ硢
ioctl 
.B EPERM
ǼԤ롣ƤӽФ桼 root ǡ
.I arg
 1 Ǥ
ξ硢üޤ (stolen)
üüȤƤƤΥץü򼺤
.TP
.B TIOCNOTTY	void
ꤵ줿üƤӽФΥץüǤ硢
ü롣
ץå꡼ξ硢
ե饦ɥץ롼פ
.B SIGHUP

.B SIGCONT
ꡢȥåƤΥץü򼺤
.SS "롼 ID ȥå ID ν"
.TP
.BI "TIOCGPGRP	pid_t *" argp
.I "*argp = tcgetpgrp(fd)"
Ʊ
.br
üΥե饦ɥץΥץ롼 ID 롣
.TP
.BI "TIOCSPGRP	const pid_t *" argp
.I "tcsetpgrp(fd, *argp)"
Ʊ
.br
üΥե饦ɥץΥ롼 ID ꤹ롣
.TP
.BI "TIOCGSID	pid_t *" argp
ꤵ줿üΥå ID 롣
üޥüޤüǤʤϡ
.B ENOTTY
ǼԤ롣
̯
.SS ¾⡼
.TP
.B "TIOCEXCL	void"
ü¾⡼ɤˤ롣
üФơʹߤ
.BR open (2)
ػߤ롣
(root ʳξ硢ʹߤ
.BR open (2)

.B EBUSY
ǼԤ롣)
.TP
.B "TIOCNXCL	void"
¾⡼ɤ̵ˤ롣
.SS "饤 (line discipline)"
.TP
.BI "TIOCGETD	int *" argp
üΥ饤ξ롣
.TP
.BI "TIOCSETD	const int *" argp
üΥ饤ξꤹ롣
.SS "ü ioctl"
.TP
.BI "TIOCPKT	const int *" argp
ѥåȥ⡼ɤͭ
.RI (* argp
 0 ʳξ) ޤ̵ˤ롣
üΥޥ¦ˤΤŬѤǤ (ʳξ
.B ENOTTY
֤)
ѥåȥ⡼ɤǤϡθ˼¹Ԥ
.BR read (2)
ϡͤ 0 ʳ 1 ĤХȤޤѥåȤ
ͤ 0  1 Х ('\\0') ˵üΥ졼¦ǽ񤭹ޤ줿
ǡ³ѥåȤ֤
ǽΥХȤ
.B TIOCPKT_DATA
(0) Ǥʤ硢ʲΥӥåȤ 1 İʾ OR ΤǤ:

.nf
TIOCPKT_FLUSHREAD   üɤ߹ߥ塼եå (flush) 롣
TIOCPKT_FLUSHWRITE  üν񤭽Ф塼եå夵롣
TIOCPKT_STOP        üؤνϤߤ롣
TIOCPKT_START       üؤνϤƳ롣
TIOCPKT_DOSTOP      t_stopc  `^S' ǡ
                     t_startc  `^Q' Ǥ롣
TIOCPKT_NOSTOP      start ʸ stop ʸ `^S/^Q' Ǥʤ
.fi

Υ⡼ɤȤƤ硢
־¸ߤޥ¦ɤ߹뤫ϡ
㳰Ūʾ
.BR select (2)
ȤȤˤΤ뤳ȤǤ롣

Υ⡼ɤ
.BR rlogin (1)

.BR rlogind (8)
ǻȤ졢⡼ȥΥ⡼ȥ
Ǥ `^S/^Q' եΥ⡼ȥƤ롣

BSD  ioctl Ǥ
.BR TIOCSTOP ,
.BR TIOCSTART ,
.BR TIOCUCNTL ,
.B TIOCREMOTE
ϡLinux ǤϼƤʤ
.SS ǥ
.TP
.BI "TIOCMGET	int *" argp
ǥӥåξ֤롣
.TP
.BI "TIOCMSET	const int *" argp
ǥӥåξ֤ꤹ롣
.TP
.BI "TIOCMBIC	const int *" argp
ꤵ줿ǥӥå򥯥ꥢ롣
.TP
.BI "TIOCMBIS	const int *" argp
ꤵ줿ǥӥåꤹ롣
.LP
 4 Ĥ ioctl ǻȤӥåȤϰʲ̤:

.nf
TIOCM_LE        DSR (data set ready/line enable)
TIOCM_DTR       DTR (data terminal ready)
TIOCM_RTS       RTS (request to send)
TIOCM_ST        Secondary TXD (transmit)
TIOCM_SR        Secondary RXD (receive)
TIOCM_CTS       CTS (clear to send)
TIOCM_CAR       DCD (data carrier detect)
TIOCM_CD         TIOCM_CAR 򻲾ȡ
TIOCM_RNG       RNG (ring)
TIOCM_RI         TIOCM_RNG 򻲾ȡ
TIOCM_DSR       DSR (data set ready)
.fi
.SS "Ȥƥޡ"
.TP
.BI "TIOCGSOFTCAR	int *" argp
("եȥꥢե饰μ")
termios ¤Τ c_cflag եɤ
.B CLOCAL
ե饰ξ֤롣
.TP
.BI "TIOCSSOFTCAR	const int *" argp
("եȥꥢե饰")
.RI * argp
 0 ʳξ硢termios ¤Τ
.B CLOCAL
ե饰ꤹ롣
0 ξϥꥢ롣
.LP
.B CLOCAL
ե饰դξ硢
ϡɥꥢ (hardware carrier detect, DCD) ʥ뤬פǤꡢ
.B O_NONBLOCK
ե饰ꤵʤ¤ꡢбü
.BR open (2)
 DCD ޤǥ֥å롣
.B CLOCAL
ꤵƤ硢
饤Ͼ DCD Ƥ뤫Τ褦ư롣
եȥꥢե饰ϡǥХǤ̾ϥˤʤäƤꡢ
ǥΥ饤ǤϥդˤʤäƤ롣
.SS "Linux ͭ ioctl"
.B TIOCLINUX
ioctl ˤĤƤϡ
.BR console_ioctl (4)
򻲾Ȥ뤳ȡ
.SS ͥǥХå
.B "#include <linux/tty.h>"
.TP
.BI "TIOCTTYGSTRUCT	struct tty_struct *" argp
.I fd
б
.I tty_struct
.\" .SS "ꥢ"
.\" .BR "#include <linux/serial.h>"
.\" .sp
.\" .TP
.\" .BI "TIOCGSERIAL	struct serial_struct *" argp
.\" ꥢ롣
.\" .TP
.\" .BI "TIOCSSERIAL	const struct serial_struct *" argp
.\" ꥢꤹ롣
.SH ֤
.BR ioctl ()
ƥॳϡ 0 ֤
顼ξ \-1 ֤
.I errno
Ŭڤꤹ롣
.SH 顼
.TP
.B EINVAL
ʥޥɰǤ롣
.TP
.B ENOIOCTLCMD
ʥޥɤǤ롣
.TP
.B ENOTTY
.I fd
ŬڤǤ롣
.TP
.B EPERM
¤­Ƥ롣
.SH 
ꥢݡȤ DTR ξ֤å롣

.nf
#include <termios.h>
#include <fcntl.h>
#include <sys/ioctl.h>

int
main(void)
{
    int fd, serial;

    fd = open("/dev/ttyS0", O_RDONLY);
    ioctl(fd, TIOCMGET, &serial);
    if (serial & TIOCM_DTR)
        puts("TIOCM_DTR ꤵƤʤ");
    else
        puts("TIOCM_DTR ꤵƤ롣");
    close(fd);
}
.fi
.SH Ϣ
.BR ioctl (2),
.BR termios (3),
.BR console_ioctl (4),
.BR pty (7)
.\"
.\" FIONBIO			const int *
.\" FIONCLEX			void
.\" FIOCLEX			void
.\" FIOASYNC			const int *
.\" serial.c :
.\" TIOCSERCONFIG		void
.\" TIOCSERGWILD		int *
.\" TIOCSERSWILD		const int *
.\" TIOCSERGSTRUCT		struct async_struct *
.\" TIOCSERGETLSR		int *
.\" TIOCSERGETMULTI		struct serial_multiport_struct *
.\" TIOCSERSETMULTI		const struct serial_multiport_struct *
.\" TIOCGSERIAL, TIOCSSERIAL (嵭򻲾)