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
|
.\" Copyright (c) 2001-2003 The Open Group, All Rights Reserved
.TH "TCSETATTR" 3P 2003 "IEEE/The Open Group" "POSIX Programmer's Manual"
.\" tcsetattr
.SH NAME
tcsetattr \- set the parameters associated with the terminal
.SH SYNOPSIS
.LP
\fB#include <termios.h>
.br
.sp
int tcsetattr(int\fP \fIfildes\fP\fB, int\fP \fIoptional_actions\fP\fB,
.br
\ \ \ \ \ \ const struct termios *\fP\fItermios_p\fP\fB);
.br
\fP
.SH DESCRIPTION
.LP
The \fItcsetattr\fP() function shall set the parameters associated
with the terminal referred to by the open file descriptor
\fIfildes\fP (an open file descriptor associated with a terminal)
from the \fBtermios\fP structure referenced by \fItermios_p\fP
as follows:
.IP " *" 3
If \fIoptional_actions\fP is TCSANOW, the change shall occur immediately.
.LP
.IP " *" 3
If \fIoptional_actions\fP is TCSADRAIN, the change shall occur after
all output written to \fIfildes\fP is transmitted. This
function should be used when changing parameters that affect output.
.LP
.IP " *" 3
If \fIoptional_actions\fP is TCSAFLUSH, the change shall occur after
all output written to \fIfildes\fP is transmitted, and
all input so far received but not read shall be discarded before the
change is made.
.LP
.LP
If the output baud rate stored in the \fBtermios\fP structure pointed
to by \fItermios_p\fP is the zero baud rate, B0, the
modem control lines shall no longer be asserted. Normally, this shall
disconnect the line.
.LP
If the input baud rate stored in the \fBtermios\fP structure pointed
to by \fItermios_p\fP is 0, the input baud rate given to
the hardware is the same as the output baud rate stored in the \fBtermios\fP
structure.
.LP
The \fItcsetattr\fP() function shall return successfully if it was
able to perform any of the requested actions, even if some
of the requested actions could not be performed. It shall set all
the attributes that the implementation supports as requested and
leave all the attributes not supported by the implementation unchanged.
If no part of the request can be honored, it shall return
-1 and set \fIerrno\fP to [EINVAL]. If the input and output baud rates
differ and are a combination that is not supported, neither
baud rate shall be changed. A subsequent call to \fItcgetattr\fP()
shall return the
actual state of the terminal device (reflecting both the changes made
and not made in the previous \fItcsetattr\fP() call). The
\fItcsetattr\fP() function shall not change the values found in the
\fBtermios\fP structure under any circumstances.
.LP
The effect of \fItcsetattr\fP() is undefined if the value of the \fBtermios\fP
structure pointed to by \fItermios_p\fP was
not derived from the result of a call to \fItcgetattr\fP() on \fIfildes\fP;
an
application should modify only fields and flags defined by this volume
of IEEE\ Std\ 1003.1-2001 between the call to \fItcgetattr\fP() and
\fItcsetattr\fP(), leaving all other fields and flags
unmodified.
.LP
No actions defined by this volume of IEEE\ Std\ 1003.1-2001, other
than a call to \fItcsetattr\fP() or a close of the
last file descriptor in the system associated with this terminal device,
shall cause any of the terminal attributes defined by this
volume of IEEE\ Std\ 1003.1-2001 to change.
.LP
If \fItcsetattr\fP() is called from a process which is a member of
a background process group on a \fIfildes\fP associated
with its controlling terminal:
.IP " *" 3
If the calling process is blocking or ignoring SIGTTOU signals, the
operation completes normally and no signal is sent.
.LP
.IP " *" 3
Otherwise, a SIGTTOU signal shall be sent to the process group.
.LP
.SH RETURN VALUE
.LP
Upon successful completion, 0 shall be returned. Otherwise, -1 shall
be returned and \fIerrno\fP set to indicate the error.
.SH ERRORS
.LP
The \fItcsetattr\fP() function shall fail if:
.TP 7
.B EBADF
The \fIfildes\fP argument is not a valid file descriptor.
.TP 7
.B EINTR
A signal interrupted \fItcsetattr\fP().
.TP 7
.B EINVAL
The \fIoptional_actions\fP argument is not a supported value, or an
attempt was made to change an attribute represented in the
\fBtermios\fP structure to an unsupported value.
.TP 7
.B ENOTTY
The file associated with \fIfildes\fP is not a terminal.
.sp
.LP
The \fItcsetattr\fP() function may fail if:
.TP 7
.B EIO
The process group of the writing process is orphaned, and the writing
process is not ignoring or blocking SIGTTOU.
.sp
.LP
\fIThe following sections are informative.\fP
.SH EXAMPLES
.LP
None.
.SH APPLICATION USAGE
.LP
If trying to change baud rates, applications should call \fItcsetattr\fP()
then call \fItcgetattr\fP() in order to determine what baud rates
were actually selected.
.SH RATIONALE
.LP
The \fItcsetattr\fP() function can be interrupted in the following
situations:
.IP " *" 3
It is interrupted while waiting for output to drain.
.LP
.IP " *" 3
It is called from a process in a background process group and SIGTTOU
is caught.
.LP
.LP
See also the RATIONALE section in \fItcgetattr\fP() .
.SH FUTURE DIRECTIONS
.LP
Using an input baud rate of 0 to set the input rate equal to the output
rate may not necessarily be supported in a future
version of this volume of IEEE\ Std\ 1003.1-2001.
.SH SEE ALSO
.LP
\fIcfgetispeed\fP() , \fItcgetattr\fP() , the Base Definitions
volume of IEEE\ Std\ 1003.1-2001, Chapter 11, General Terminal Interface,
\fI<termios.h>\fP, \fI<unistd.h>\fP
.SH COPYRIGHT
Portions of this text are reprinted and reproduced in electronic form
from IEEE Std 1003.1, 2003 Edition, Standard for Information Technology
-- Portable Operating System Interface (POSIX), The Open Group Base
Specifications Issue 6, Copyright (C) 2001-2003 by the Institute of
Electrical and Electronics Engineers, Inc and The Open Group. In the
event of any discrepancy between this version and the original IEEE and
The Open Group Standard, the original IEEE and The Open Group Standard
is the referee document. The original Standard can be obtained online at
http://www.opengroup.org/unix/online.html .
|