*nix Documentation Project
·  Home
 +   man pages
·  Linux HOWTOs
·  FreeBSD Tips
·  *niX Forums

  man pages->Linux man pages -> termios (3)              
Title
Content
Arch
Section
 

TERMIOS(3)

Contents


NAME    [Toc]    [Back]

       termios,  tcgetattr,  tcsetattr, tcsendbreak, tcdrain, tcflush, tcflow,
       cfmakeraw, 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    [Toc]    [Back]

       #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 );

       int cfmakeraw ( struct termios *termios_p );

       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    [Toc]    [Back]

       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    [Toc]    [Back]
	      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    [Toc]    [Back]
	      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    [Toc]    [Back]
	      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 0x40 greater than the control signal.	 For  example,
	      character 0x08 (BS) is echoed as ^H.

       ECHOPRT    [Toc]    [Back]
	      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.

       The c_cc array defines the special control  characters.	 The  symbolic
       indices	(and meaning: initial values) are: VINTR (interrupt character:
       0177, DEL, rubout), VQUIT (quit character:  034,  FS,  Ctrl-\),	VERASE
       (erase  character:  010,  BS, Ctrl-H), VKILL (kill character: 025, NAK,
       Ctrl-U), VEOF (end-of-file character: 004,  EOT,  Ctrl-D),  VMIN,  VEOL
       (additional  end-of-line  character: 0, NUL), VTIME, VEOL2 (yet another
       end-of-line character: 0, NUL),	VSWTCH	(switch  character:  0,  NUL),
       VSTART (start character: 021, DC1, Ctrl-Q), VSTOP (stop character: 023,
       DC3, Ctrl-S), VSUSP  (suspend  character:  032,	SUB,  Ctrl-Z),	VDSUSP
       (delayed  suspend  character:  031,  EM, Ctrl-Y), VLNEXT (literal next:
       026, SYN, Ctrl-V), VWERASE (word erase:	027,  ETB,  Ctrl-W),  VREPRINT
       (reprint  unread characters: 022, DC2, Ctrl-R), VDISCARD (discard pending
 output: 017, SI, Ctrl-O).

       These symbolic subscript values are all different, except  that	VTIME,
       VMIN  may  have	the  same value as VEOL, VEOF, respectively.  (In noncanonical
 mode the special character meaning is replaced by the timeout
       meaning. MIN represents the minimum number of characters that should be
       received to satisfy the read. TIME is a decisecond-valued  timer.  When
       both  are  set,	a read will wait until at least one character has been
       received, and then return as soon as either MIN	characters  have  been
       received or time TIME has passed since the last character was received.
       If only MIN is set, the read will not return before MIN characters have
       been  received.	If  only  TIME is set, the read will return as soon as
       either at least one character has been received,  or  the  timer  times
       out.  If  neither is set, the read will return immediately, only giving
       the currently already available characters.)

       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    [Toc]    [Back]
	      the change occurs immediately.

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

       TCSAFLUSH    [Toc]    [Back]
	      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    [Toc]    [Back]
	      flushes data received but not read.

       TCOFLUSH    [Toc]    [Back]
	      flushes data written but not transmitted.

       TCIOFLUSH    [Toc]    [Back]
	      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.

       cfmakeraw sets the terminal attributes as follows:
		   termios_p->c_iflag &= ~(IGNBRK|BRKINT|PARMRK|ISTRIP
				   |INLCR|IGNCR|ICRNL|IXON);
		   termios_p->c_oflag &= ~OPOST;
		   termios_p->c_lflag &= ~(ECHO|ECHONL|ICANON|ISIG|IEXTEN);
		   termios_p->c_cflag &= ~(CSIZE|PARENB);
		   termios_p->c_cflag |= CS8;

       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 VALUE    [Toc]    [Back]

       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    [Toc]    [Back]

      
      
       setserial(8)



Linux				  1995-09-02			    TERMIOS(3)
[ Back ]
 Similar pages
Name OS Title
cfgetospeed Tru64 Get the output baud rate for a terminal
cfgetispeed Tru64 Get the input baud rate for a terminal
cfsetispeed Tru64 Set input baud rate for a terminal
cfsetospeed Tru64 Set the output baud rate for a terminal
termios FreeBSD general terminal line discipline
dial IRIX establish an out-going terminal line connection
termios OpenBSD general terminal line discipline
setterm Linux set terminal attributes
gettydefs Tru64 Terminal attributes
stty Linux change and print terminal line settings
Copyright © 2004-2005 DeniX Solutions SRL
newsletter delivery service