| 
                  Unix Terminals
                   An Introduction  | 
            
| 
                   
                      
                     Prof. David Bernstein
                       | 
            
| Computer Science Department | 
| bernstdh@jmu.edu | 
               
            
         
            
         xterm)
         
            
         /dev or /dev/pts
                     tty in each to get its namels (you should know 
              what will happen)ls > other
                         
              where other is the name of the other terminal
              (e.g., /dev/pts/1)man man (so that the
              output requires more than one "screen" 
              and you need to provide input to move between "screens")
         
            
         
         
            
         read() only returns when a line-feed character is
              encountered
         
            
         int tcsetattr(int fd, int options, const struct termios *attr);
               
                        fd
                      | 
                     The open file descriptor for the terminal | 
                        options
                      | 
                     TCSANOW to make changes now; TCSADRAIN to wait until after all output is transmitted; TCSAFLUSH to both wait and discard input not received | 
                        attr
                      | 
                     The attributes to set | 
| Return | 0 on success; -1 on error | 
termios Structure
         
            
         
         
            
         c_iflag
            
                        ICRNL
                      | 
                     Map CR to LF (i.e., newline) on input | 
                        IGNCR
                      | 
                     Ignore CR on input | 
c_lflag
            
                        ECHO
                      | 
                     Echo input characters | 
                        ICANON
                      | 
                     Canonical model input | 
                        IEXTEN
                      | 
                     Enable extended processing of input characters | 
                        ISIG
                      | 
                     Enable signal generating characters | 
read() Return in Noncanonical Mode?
         
            
         VMIN is 0, VTIME is 0VMIN is > 0, VTIME is 0VMIN is 0, VTIME is > 0VMIN is > 0, VTIME is > 0