Terminal control structure
struct termios {
    tcflag_t        c_iflag;
    tcflag_t        c_oflag;
    tcflag_t        c_cflag;
    tcflag_t        c_lflag;
    cc_t            c_cc[NCCS];
    uint32_t        reserved[3];
    speed_t         c_ispeed;
    speed_t         c_ospeed;
};
The termios control structure is defined in 
<termios.h>, and contains at least the members described below.
- tcflag_t c_iflag
    
- Input modes. This member contains at least the following bits:
    
- BRKINT
        
- Signal interrupt on break.
          
      
- ICRNL
        
- Map CR to NL on input.
          
      
- IGNBRK
        
- Ignore break conditions.
          
      
- IGNCR
        
- Ignore CR.
          
      
- IGNPAR
        
- Ignore characters with parity errors.
          
      
- INLCR
        
- Map NL to CR on input.
          
      
- INPCK
        
- Enable input parity check.
          
      
- ISTRIP
        
- Strip top bit from character.
          
      
- IXOFF
        
- Enable software input flow control (via START/STOP chars).
          
      
- IXON
        
- Enable software output flow control (via START/STOP chars).
          
      
- PARMRK
        
- Mark parity errors in the input data stream.
          
    
 
- tcflag_t c_oflag
    
- Output modes. This member contains at least the following bits:
    
- OPOST
        
- Perform output processing.
          
    
 
- tcflag_t c_cflag
    
- Control modes. This member contains at least the following bits:
    
- CLOCAL
        
- Ignore modem status lines.
          
      
- CREAD
        
- Enable receiver.
          
      
- CSIZE
        
- Number of data bits per character.
          
      
- CS5
        
- 5 data bits.
          
      
- CS6
        
- 6 data bits.
      
- CS7
        
- 7 data bits.
      
- CS8
        
- 8 data bits.
      
- CSTOPB
        
- Two stop bits, else one.
          
      
- HUPCL
        
- Hang up on last close.
          
      
- IHFLOW
        
- Support input flow control using the hardware handshaking lines.
          
       
- OHFLOW
         
- Support output flow control using the hardware handshaking lines.
          
      
- PARENB
        
- Parity enable.
          
      
- PARODD
        
- Odd parity, else even.
          
      
- PARSTK
        
- Stick parity (mark parity if PARODD is set, else 
          space parity).
          
  
 
- tcflag_t c_lflag
    
- Local modes. This member contains at least the following bits:
      
- ECHO
          
- Enable echo.
            
        
- ECHOE
          
- Echo ERASE as destructive backspace.
            
        
- ECHOK
          
- Echo KILL as a line erase.
            
        
- ECHONL
          
- Echo '\n', even if ECHO is off.
            
        
- ICANON
          
- Canonical input mode (line editing enabled).
            
        
- IEXTEN
          
- QNX extensions to POSIX are enabled.
      
        
- ISIG
          
- Enable signals.
            
        
- NOFLSH
          
- Disable flush after interrupt, quit, or suspend.
            
        
- TOSTOP
          
- Send SIGTTOU for background output.
            
      
 
- cc_t c_cc[NCCS]
    
- Control characters.
      The array c_cc includes at least the following control 
      characters:
      
      
- c_cc[VEOF]
          
- EOF character.
        
- c_cc[VEOL]
          
- EOL character.
        
- c_cc[VERASE]
          
- ERASE character.
        
- c_cc[VFWD]
          
- FORWARD character.
        
- c_cc[VINTR]
          
- INTR character.
        
- c_cc[VKILL]
          
- KILL character.
        
- c_cc[VMIN]
          
- MIN value.
        
- c_cc[VQUIT]
          
- QUIT character.
        
- c_cc[VSUSP]
          
- SUSP character.
        
- c_cc[VTIME]
          
- TIME value.
        
- c_cc[VSTART]
          
- START character.
        
- c_cc[VSTOP]
          
- STOP character.
      
       The following control characters are also defined, but are only acted
      on if they're immediately preceded by the nonzero characters
      in c_cc[VPREFIX][4], and are immediately 
      followed by 
      the nonzero characters in c_cc[VSUFFIX][4]
      and the IEXTEN bit of c_lflag is set:
       
- c_cc[VLEFT]
          
- Left cursor motion.
        
- c_cc[VRIGHT]
          
- Right cursor motion.
        
- c_cc[VUP]
          
- Up cursor motion.
        
- c_cc[VDOWN]
          
- Down cursor motion.
        
- c_cc[VINS]
          
- Insert character.
        
- c_cc[VDEL]
          
- Delete character.
        
- c_cc[VRUB]
          
- Rubout character.
        
- c_cc[VCAN]
          
- Cancel character.
        
- c_cc[VHOME]
          
- Home character.
        
- c_cc[VEND]
          
- End character.
      
       
      Any of the control characters in the c_cc array can be
      disabled by setting that character to the _PC_VDISABLE
      parameter which is returned by 
      fpathconf() (typically a 
      zero).
   
- speed_t c_ispeed
    
- Input baud rate. This member should be queried and set with the
      cfgetispeed() and
      cfsetispeed() functions.
      
  
- speed_t c_ospeed
    
- Output baud rate. This member should be queried and set with the
      cfgetospeed() and
      cfsetospeed() functions.
POSIX 1003.1
cfgetispeed(),
cfgetospeed(),
cfsetispeed(),
cfsetospeed(),
cfmakeraw(),
fpathconf(),
forkpty(),
openpty(),
pathconf(),
readcond(),
tcgetattr(),
tcsetattr()