tcsendbreak
, tcdrain
,
tcflush
, tcflow
—
line control functions
Standard C Library (libc, -lc)
#include <termios.h>
int
tcdrain
(int
fd);
int
tcflow
(int
fd, int
action);
int
tcflush
(int
fd, int
action);
int
tcsendbreak
(int
fd, int len);
The tcdrain
() function waits until all output written to
the terminal referenced by fd has been transmitted to
the terminal.
The tcflow
() function suspends
transmission of data to or the reception of data from the terminal
referenced by fd depending on the value of
action. The value of action must
be one of the following:
- TCOOFF
- Suspend output.
- TCOON
- Restart suspended output.
- TCIOFF
- Transmit a STOP character, which is intended to cause the terminal to stop
transmitting data to the system. (See the description of IXOFF in the
‘
Input Modes
’ section of
termios(4)).
- TCION
- Transmit a START character, which is intended to cause the terminal to
start transmitting data to the system. (See the description of IXOFF in
the ‘
Input Modes
’ section of
termios(4)).
The tcflush
() function discards any data
written to the terminal referenced by fd which has not
been transmitted to the terminal, or any data received from the terminal but
not yet read, depending on the value of action. The
value of action must be one of the following:
- TCIFLUSH
- Flush data received but not read.
- TCOFLUSH
- Flush data written but not transmitted.
- TCIOFLUSH
- Flush both data received but not read and data written but not
transmitted.
The tcsendbreak
() function transmits a
continuous stream of zero-valued bits for four-tenths of a second to the
terminal referenced by fd. The
len argument is ignored in this implementation.
Upon successful completion, all of these functions return a value of zero.
If any error occurs, a value of -1 is returned and the global variable
errno is set to indicate the error, as follows:
- [
EBADF
]
- The fd argument is not a valid file descriptor.
- [
EINVAL
]
- The action argument is not a proper value.
- [
ENOTTY
]
- The file associated with fd is not a terminal.
- [
EINTR
]
- A signal interrupted the
tcdrain
() function.
- [
EWOULDBLOCK
]
- The configured timeout expired before the
tcdrain
() function could write all buffered
output.
The tcsendbreak
(), tcflush
() and
tcflow
() functions are expected to be compliant with
the IEEE Std 1003.1-1988 (“POSIX.1”)
specification.
The tcdrain
() function is expected to be
compliant with IEEE Std 1003.1-1988
(“POSIX.1”) when the drain wait value is set to zero
with
comcontrol(8),
or with
ioctl(2)
TIOCSDRAINWAIT, or with
sysctl(8)
kern.tty_drainwait. A non-zero drain wait value can
result in tcdrain
() returning
EWOULDBLOCK without writing all output. The default
value for kern.tty_drainwait is 300 seconds.