NAME
tcgetattr(), tcsetattr() — control tty device
SYNOPSIS
#include <termios.h>
int tcgetattr(int fildes, struct termios *termios_p);
int tcsetattr(
int fildes,
int optional_actions,
const struct termios *termios_p
);
DESCRIPTION
tcgetattr()
gets the parameters associated with
fildes
and stores them in the
termios
structure referenced by
termios_p.
If the terminal device does not support split baud rates,
the input baud rate stored in the
termios
structure is zero.
This function is allowed from a background process (see
termio(7)).
However, the terminal attributes
can be subsequently changed by a foreground process.
tcsetattr()
sets the parameters associated with
fildes
(unless support is required
from underlying hardware that is not available)
from the
termios
structure referenced by
termios_p
as follows:
If
optional_actions
is
TCSANOW,
the change is immediate.
If
optional_actions
is
TCSADRAIN,
the change occurs after all output written to
fildes
is transmitted.
If
optional_actions
is
TCSAFLUSH,
the change occurs after all output written to
fildes
is transmitted, and all input
that has been received but not read is discarded.
RETURN VALUE
Upon successful completion, a value of zero is returned.
Otherwise, a value of -1 is returned and
errno
is set to indicate the error.
ERRORS
tcgetattr()
and
tcsetattr()
fail if any of the following conditions are encountered:
- [EBADF]
fildes
is not a valid file descriptor.
- [EINVAL]
The
optional_actions
argument is not a proper value or no part of a
tcsetattr()
request could be performed.
- [ENOTTY]
The file associated with
fildes
is not a terminal.
WARNINGS
tcsetattr()
will attempt to perform as much of the request as possible.
However, the hardware being used may not support all possible c_cflag
values.
If any part of the request can be performed, those values will be set,
any values not supported by the hardware will be ignored, and
tcsetattr()
will complete successfully.
If no part of the request can be performed,
tcsetattr()
will fail and set
errno
to
[EINVAL].
For any hardware that does not support
separate input and output baud rates,
an attempt to set different input and output baud rates
does not affect either baud rate.
tcgetattr()
always returns the actual values set in hardware.
For any hardware that does not support
separate input and output baud rates,
tcgetattr()
returns zero for the input baud rate.
STANDARDS CONFORMANCE
tcgetattr(): AES, SVID3, XPG3, XPG4, FIPS 151-2, POSIX.1
tcsetattr(): AES, SVID3, XPG3, XPG4, FIPS 151-2, POSIX.1