termios

TERMIOS(2)                 Linux Programmer's Manual                TERMIOS(2)



NAME
       termios, tcgetattr, tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
       cfgetospeed, cfgetispeed, cfsetispeed, cfsetospeed, tcgetpgrp,
       tcsetpgrp - get and set terminal attributes, line control, get and set
       baud rate, get and set terminal foreground process group ID

SYNOPSIS
       #include <termios.h>
       #include <unistd.h>

       int tcgetattr ( int fd, struct termios *termios_p );

       int tcsetattr ( int fd, int optional_actions, struct termios *termios_p
       );

       int tcsendbreak ( int fd, int duration );

       int tcdrain ( int fd );

       int tcflush ( int fd, int queue_selector );

       int tcflow ( int fd, int action );

       speed_t cfgetospeed ( struct termios *termios_p );

       int cfsetospeed ( struct termios *termios_p, speed_t speed );

       speed_t cfgetispeed ( struct termios *termios_p );

       int cfsetispeed ( struct termios *termios_p, speed_t speed );

       pid_t tcgetpgrp ( int fd );

       int tcsetpgrp ( int fd, pid_t pgrpid );

DESCRIPTION
       The termios functions describe a general terminal interface that is
       provided to control asynchronous communications ports.

       Many of the functions described here have a termios_p argument that is
       a pointer to a termios structure.  This structure contains the
       following members:

              tcflag_t c_iflag;      /* input modes */
              tcflag_t c_oflag;      /* output modes */
              tcflag_t c_cflag;      /* control modes */
              tcflag_t c_lflag;      /* local modes */
              cc_t c_cc[NCCS];       /* control chars */


       c_iflag flag constants:

       IGNBRK ignore BREAK condition on input

       BRKINT If IGNBRK is not set, generate SIGINT on BREAK condition, else
              read BREAK as character \0.

       IGNPAR ignore framing errors and parity errors.

       PARMRK if IGNPAR is not set, prefix a character with a parity error or
              framing error with \377 \0.  If neither IGNPAR nor PARMRK is
              set, read a character with a parity error or framing error as
              \0.

       INPCK  enable input parity checking

       ISTRIP strip off eighth bit

       INLCR  translate NL to CR on input

       IGNCR  ignore carriage return on input

       ICRNL  translate carriage return to newline on input (unless IGNCR is
              set)

       IUCLC  map uppercase characters to lowercase on input

       IXON   enable XON/XOFF flow control on output

       IXANY  enable any character to restart output

       IXOFF  enable XON/XOFF flow control on input

       IMAXBEL
              ring bell when input queue is full

       c_oflag flag constants:

       OPOST  enable implementation-defined output processing

       OLCUC  map lowercase characters to uppercase on output

       ONLCR  map NL to CR-NL on output

       OCRNL  map CR to NL on output

       ONOCR  don't output CR at column 0

       ONLRET don't output CR

       OFILL  send fill characters for a delay, rather than using a timed
              delay

       OFDEL  fill character is ASCII DEL.  If unset, fill character is ASCII
              NUL

       NLDLY  newline delay mask.  Values are NL0 and NL1.

       CRDLY  carriage return delay mask.  Values are CR0, CR1, CR2, or CR3.

       TABDLY horizontal tab delay mask.  Values are TAB0, TAB1, TAB2, TAB3,
              or XTABS.  A value of XTABS expands tabs to spaces (with tab
              stops every eight columns).

       BSDLY  backspace delay mask.  Values are BS0 or BS1.

       VTDLY  vertical tab delay mask.  Values are VT0 or VT1.

       FFDLY  form feed delay mask.  Values are FF0 or FF1.

       c_cflag flag constants:

       CSIZE  character size mask.  Values are CS5, CS6, CS7, or CS8.

       CSTOPB set two stop bits, rather than one.

       CREAD  enable receiver.

       PARENB enable parity generation on output and parity checking for
              input.

       PARODD parity for input and output is odd.

       HUPCL  lower modem control lines after last process closes the device
              (hang up).

       CLOCAL ignore modem control lines

       CIBAUD mask for input speeds (not used).

       CRTSCTS
              flow control.

       c_lflag flag constants:

       ISIG   when any of the characters INTR, QUIT, SUSP, or DSUSP are
              received, generate the corresponding signal.

       ICANON enable canonical mode.  This enables the special characters EOF,
              EOL, EOL2, ERASE, KILL, REPRINT, STATUS, and WERASE, and buffers
              by lines.

       XCASE  if ICANON is also set, terminal is uppercase only.  Input is
              converted to lowercase, except for characters preceded by \.  On
              output, uppercase characters are preceded by \ and lowercase
              characters are converted to uppercase.

       ECHO   echo input characters.

       ECHOE  if ICANON is also set, the ERASE character erases the preceding
              input character, and WERASE erases the preceding word.

       ECHOK  if ICANON is also set, the KILL character erases the current
              line.

       ECHONL if ICANON is also set, echo the NL character even if ECHO is not
              set.

       ECHOCTL
              if ECHO is also set, ASCII control signals other than TAB, NL,
              START, and STOP are echoed as ^X, where X is the character with
              ASCII code 0x10 greater than the control signal.  For example,
              character 0x28 (BS) is echoed as ^H.

       ECHOPRT
              if ICANON and IECHO are also set, characters are printed as they
              are being erased.

       ECHOKE if ICANON is also set, KILL is echoed by erasing each character
              on the line, as specified by ECHOE and ECHOPRT.

       FLUSHO output is being flushed.  This flag is toggled by typing the
              DISCARD character.

       NOFLSH disable flushing the input and output queues when generating the
              SIGINT and SIGQUIT signals, and flushing the input queue when
              generating the SIGSUSP signal.

       TOSTOP send the SIGTTOU signal to the process group of a background
              process which tries to write to its controlling terminal.

       PENDIN all characters in the input queue are reprinted when the next
              character is read.  (bash handles typeahead this way.)

       IEXTEN enable implementation-defined input processing.

       tcgetattr() gets the parameters associated with the object referred by
       fd and stores them in the termios structure referenced by termios_p.
       This function may be invoked from a background process; however, the
       terminal attributes may be subsequently changed by a foreground
       process.

       tcsetattr() sets the parameters associated with the terminal (unless
       support is required from the underlying hardware that is not available)
       from the termios structure referred to by termios_p.  optional_actions
       specifies when the changes take effect:

       TCSANOW
              the change occurs immediately.

       TCSADRAIN
              the change occurs after all output written to fd has been
              transmitted.  This function should be used when changing
              parameters that affect output.

       TCSAFLUSH
              the change occurs after all output written to the object
              referred by fd has been transmitted, and all input that has been
              received but not read will be discarded before the change is
              made.

       tcsendbreak() transmits a continuous stream of zero-valued bits for a
       specific duration, if the terminal is using asynchronous serial data
       transmission.  If duration is zero, it transmits zero-valued bits for
       at least 0.25 seconds, and not more that 0.5 seconds.  If duration is
       not zero, it sends zero-valued bits for duration*N seconds, where N is
       at least 0.25, and not more than 0.5.

       If the terminal is not using asynchronous serial data transmission,
       tcsendbreak() returns without taking any action.

       tcdrain() waits until all output written to the object referred to by
       fd has been transmitted.

       tcflush() discards data written to the object referred to by fd but not
       transmitted, or data received but not read, depending on the value of
       queue_selector:

       TCIFLUSH
              flushes data received but not read.

       TCOFLUSH
              flushes data written but not transmitted.

       TCIOFLUSH
              flushes both data received but not read, and data written but
              not transmitted.

       tcflow() suspends transmission or reception of data on the object
       referred to by fd, depending on the value of action:

       TCOOFF suspends output.

       TCOON  restarts suspended output.

       TCIOFF transmits a STOP character, which stops the terminal device from
              transmitting data to the system.

       TCION  transmits a START character, which starts the terminal device
              transmitting data to the system.

       The default on open of a terminal file is that neither its input nor
       its output is suspended.

       The baud rate functions are provided for getting and setting the values
       of the input and output baud rates in the termios structure.  The new
       values do not take effect until tcsetattr() is successfully called.

       Setting the speed to B0 instructs the modem to "hang up".  The actual
       bit rate corresponding to B38400 may be altered with setserial(8).

       The input and output baud rates are stored in the termios structure.

       cfgetospeed() returns the output baud rate stored in the termios
       structure pointed to by termios_p.

       cfsetospeed() sets the output baud rate stored in the termios structure
       pointed to by termios_p to speed, which must be one of these constants:
            B0
            B50
            B75
            B110
            B134
            B150
            B200
            B300
            B600
            B1200
            B1800
            B2400
            B4800
            B9600
            B19200
            B38400
            B57600
            B115200
            B230400
       The zero baud rate, B0, is used to terminate the connection.  If B0 is
       specified, the modem control lines shall no longer be asserted.
       Normally, this will disconnect the line.  CBAUDEX is a mask for the
       speeds beyond those defined in POSIX.1 (57600 and above).  Thus, B57600
       & CBAUDEX is nonzero.

       cfgetispeed() returns the input baud rate stored in the termios
       structure.

       cfsetispeed() sets the input baud rate stored in the termios structure
       to speed.  If the input baud rate is set to zero, the input baud rate
       will be equal to the output baud rate.

       tcgetpgrp() returns process group ID of foreground processing group, or
       -1 on error.

       tcsetpgrp() sets process group ID to pgrpid.  pgrpid must be the ID of
       a process group in the same session.

RETURN VALUES
       cfgetispeed() returns the input baud rate stored in the termios
       structure.

       cfgetospeed() returns the output baud rate stored in the termios
       structure.

       tcgetpgrp() returns process group ID of foreground processing group, or
       -1 on error.

       All other functions return:

       0      on success.

       -1     on failure and set errno to indicate the error.

SEE ALSO
       setserial(8)



Linux                          February 25, 1995                    TERMIOS(2)