![]() Chapter Contents  | 
![]() Previous  | 
![]() Next  | 
| tcdrain | 
| Portability: | POSIX.1 conforming | 
| SYNOPSIS | |
| DESCRIPTION | |
| RETURN VALUE | |
| EXAMPLE | |
| RELATED FUNCTIONS | 
| SYNOPSIS | 
#include <termios.h> int tcdrain(int fileDescriptor);
| DESCRIPTION | 
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.
| RETURN VALUE | 
tcdrain
 returns a 
0
if successful and a 
-1
if unsuccessful.
| EXAMPLE | 
The following example illustrates the
use of 
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);
}
| RELATED FUNCTIONS | 
![]() Chapter Contents  | 
![]() Previous  | 
![]() Next  | 
![]() Top of Page  | 
Copyright © 2001 by SAS Institute Inc., Cary, NC, USA. All rights reserved.