These functions perform miscellaneous control actions on terminal devices. As regards terminal access, they are treated like doing output: if any of these functions is used by a background process on its controlling terminal, normally all processes in the process group are sent a SIGTTOU signal. The exception is if the calling process itself is ignoring or blocking SIGTTOU signals, in which case the operation is performed and no signal is sent. Chapter 28.
int function>tcsendbreak/function> (int filedes, int duration) This function generates a break condition by transmitting a stream of zero bits on the terminal associated with the file descriptor filedes. The duration of the break is controlled by the duration argument. If zero, the duration is between 0.25 and 0.5 seconds. The meaning of a nonzero value depends on the operating system.
This function does nothing if the terminal is not an asynchronous serial data port.
The return value is normally zero. In the event of an error, a value of -1 is returned. The following errno error conditions are defined for this function:
The filedes is not a valid file descriptor.
The filedes is not associated with a terminal device.
int function>tcdrain/function> (int filedes) The tcdrain function waits until all queued output to the terminal filedes has been transmitted.
This function is a cancellation point in multi-threaded programs. This is a problem if the thread allocates some resources (like memory, file descriptors, semaphores or whatever) at the time tcdrain is called. If the thread gets canceled these resources stay allocated until the program ends. To avoid this calls to tcdrain should be protected using cancellation handlers.
The return value is normally zero. In the event of an error, a value of -1 is returned. The following errno error conditions are defined for this function:
The filedes is not a valid file descriptor.
The filedes is not associated with a terminal device.
The operation was interrupted by delivery of a signal. the section called “Primitives Interrupted by Signals”.
int function>tcflush/function> (int filedes, int queue) The tcflush function is used to clear the input and/or output queues associated with the terminal file filedes. The queue argument specifies which queue(s) to clear, and can be one of the following values:
The return value is normally zero. In the event of an error, a value of -1 is returned. The following errno error conditions are defined for this function:
The filedes is not a valid file descriptor.
The filedes is not associated with a terminal device.
A bad value was supplied as the queue argument.
It is unfortunate that this function is named tcflush, because the term "flush" is normally used for quite another operation--waiting until all output is transmitted--and using it for discarding input or output would be confusing. Unfortunately, the name tcflush comes from POSIX and we cannot change it.
int function>tcflow/function> (int filedes, int action) The tcflow function is used to perform operations relating to XON/XOFF flow control on the terminal file specified by filedes.
The action argument specifies what operation to perform, and can be one of the following values:
For more information about the STOP and START characters, see the section called “Special Characters”.
The return value is normally zero. In the event of an error, a value of -1 is returned. The following errno error conditions are defined for this function: