tcflush - flush non-transmitted output data, non-read input data or both
#include <termios.h> int tcflush(int fildes, int queue_selector);
Upon successful completion, tcflush() discards data written to the object referred to by fildes (an open file descriptor associated with a terminal) but not transmitted, or data received but not read, depending on the value of queue_selector:
- If queue_selector is TCIFLUSH it flushes data received but not read.
- If queue_selector is TCOFLUSH it flushes data written but not transmitted.
- If queue_selector is TCIOFLUSH it flushes both data received but not read and data written but not transmitted.
Attempts to use tcflush() from a process which is a member of a background process group on a fildes associated with its controlling terminal, will cause the process group to be sent a SIGTTOU signal. If the calling process is blocking or ignoring SIGTTOU signals, the process is allowed to perform the operation, and no signal is sent.
Upon successful completion, 0 is returned. Otherwise, -1 is returned and errno is set to indicate the error.
The tcflush() function will fail if:
- [EBADF]
- The fildes argument is not a valid file descriptor.
- [EINVAL]
- The queue_selector argument is not a supported value.
- [ENOTTY]
- The file associated with fildes is not a terminal.
The tcflush() function may fail if:
- [EIO]
- The process group of the writing process is orphaned, and the writing process is not ignoring or blocking SIGTTOU.
None.
None.
In the ISO POSIX-1 standard, the possibility of an [EIO] error occurring is described in XBD specification, Terminal Access Control , but it is not mentioned in the tcflow() interface definition. It has become clear that this omission was unintended, so it is likely that the [EIO] error will be reclassified as a "will fail" in a future issue of the POSIX standard.
tcdrain(), <termios.h>, <unistd.h>, the XBD specification, General Terminal Interface .
Derived from the POSIX.1-1988 standard.