#include <termios.h> int tcdrain(int fileDescriptor);
tcdrain
blocks the calling process until all output
sent to the terminal device referred to by the
file descripter fileDescriptor
has
been sent. If fileDescriptor
refers to the controlling
terminal, this function cannot be called from a background
process unless the SIGTTOU
signal is blocked. By default,
tcdrain
will return a -1
(unsuccessful) if SIGTTOU
is generated.
Note that all terminal output is considered to be sent when it has been transmitted to the OMVS command, even if all the data have not yet been actually displayed.
tcdrain
returns a 0
if successful and a -1
if unsuccessful.
tcdrain
to block
a calling process until all output is sent to a terminal, and then
to write an output line to that terminal:
#include <sys/types.h> #include <termios.h> #include <unistd.h> #include <stdio.h> #include <stdlib.h> main() { int ttyDevice = STDOUT_FILENO; char * lineOut = "Jack be nimble!"; /* Make sure file descriptor is for a TTY device. */ if ( ! isatty(ttyDevice) ) { printf("Not a TTY device.n"); return(EXIT_FAILURE); } /* Wait for all data transmission to the terminal to finish */ /* and then write a line to the terminal. */ else { if (tcdrain(ttyDevice) != 0) perror("tcdrain error"); else write(ttyDevice, lineOut, strlen(lineOut)); } return(EXIT_SUCCESS); }
tcflow
, tcflush
Copyright (c) 1998 SAS Institute Inc. Cary, NC, USA. All rights reserved.