setvbuf not able to make stdin unbuffered

前端 未结 2 1734
無奈伤痛
無奈伤痛 2020-11-27 05:44

My main intention was to make getchar return as soon as it gets a character instead of waiting for the ENTER key. I tried this

int ma         


        
2条回答
  •  孤城傲影
    2020-11-27 06:43

    The terminal driver doesn't return anything until you hit return, even if the read() operation would accept what's already there.

    To get character-by-character input from a terminal, you have to get it out of canonical mode into raw or cbreak mode, and that requires different operations altogether. Take a look at the POSIX manual on 'General Terminal Interface' for how to control the terminal. Or consider using the curses library.

    See also: Canonical vs non-canonical terminal input

提交回复
热议问题