Nonblocking IO (ITI8510)
Allikas: Lambda
								
												
				| Real-Time Operating Systems and Systems Programming | 
| [ @ ] | 
Practice with nonblocking IO.
1. Canonical mode
Goal: To write a program which echoes characters on screen while typed until button 'q' is pressed. Then it quits and prints a newline.
Hints:
- Try to put the terminal into noncanonical mode and remove terminal echo See 'man termios' or Google "noncanonical mode" for that.
 - Note that you should restore the terminal mode before quitting since otherwise the terminal might get messed up (no echo).
 - Working with bits:
 
flags &= ~NEWFLAG // Clears the bit NEWFLAG on flags flags |= NEWFLAG // Set the bit NEWFLAG on flags flags ^= NEWFLAG // Toggle NEWLAG
2. Nonblocking reads from a FIFO
Goal: To write a program which prints a '.' character every half-a second unless some input is provided on a fifo file.
Hints:
- Use open() with O_NONBLOCK flag.
 - If read() does not have anything to read, it returns with -1 and sets errno to constant EAGAIN - you can check that or try messing around with select() function.
 - FIFO can be made with a 'mkfifo fifoname' command and written to using 'cat > fifoname'.
 - You have to open fifo before reading (open two terminal windows).
 - Write your output with write() function to bypass buffering.
 - Function usleep() can be used for half-a second pause here.