Nonblocking IO (ITI8510): erinevus redaktsioonide vahel
Mine navigeerimisribale
Mine otsikasti
| 12. rida: | 12. rida: | ||
Goal: To write a program which prints a '.' character every half-a second unless some input is provided on a fifo file. | 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, [http://en.wikipedia.org/wiki/Named_pipe | '''Hints:''' | ||
*Use open() with O_NONBLOCK flag, | |||
* [http://en.wikipedia.org/wiki/Named_pipe FIFO] can be made with a 'mkfifo fifoname' command and written to using 'cat > fifoname'. | |||
* You have to open fifo ''before'' reading (use two terminals). | |||
* It helps to set output to non-buffered mode (the default is line-buffered). | |||
Redaktsioon: 18. veebruar 2010, kell 17:37
We have two tasks today. Both with practicing nonblocking IO.
1. Canonical mode
Goal: To write a program which echoes characters on screen while typed until button 'q' is pressed. Then prints a newline.
Methods: try to put the terminal into noncanonical mode. See 'man termios'. Note that you should restore the terminal mode before quitting since otherwise the terminal gets messed up.
2. Nonblocking reading 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,
- FIFO can be made with a 'mkfifo fifoname' command and written to using 'cat > fifoname'.
- You have to open fifo before reading (use two terminals).
- It helps to set output to non-buffered mode (the default is line-buffered).