Terminal I/O interfaces deal with a general terminal interface for controlling asynchronous communications ports, as shown in the following table. For more information, see the termios(3C) and termio(7I) man pages.Table 5–5 Terminal I/O Interfaces
|tcgetattr(3C), tcsetattr(3C)||Get and set terminal attributes|
|tcsendbreak(3C), tcdrain(3C), tcflush(3C), tcflow(3C)||Perform line control interfaces|
|cfgetospeed(3C), cfgetispeed(3C)cfsetispeed(3C), cfsetospeed(3C)||Get and set baud rate|
|tcsetpgrp(3C)||Get and set terminal foreground process group ID|
|tcgetsid(3C)||Get terminal session ID|
The following example shows how the server dissociates from the controlling terminal of its invoker in the non-DEBUG mode of operation.
(void) close(0); (void) close(1); (void) close(2); (void) open("/", O_RDONLY); (void) dup2(0, 1); (void) dup2(0, 2); setsid();
This operation mode prevents the server from receiving signals from the process group of the controlling terminal. A server cannot send reports of errors to a terminal after the server has dissociated. The dissociated server must log errors with syslog(3C).