作者anoymouse (沒有暱稱)
看板LinuxDev
標題[問題] 關於select() 範例的問題
時間Wed Dec 4 18:43:59 2019
http://man7.org/tlpi/code/online/book/altio/t_select.c.html
功能: 用select() 觀察fd 0 是否ready。
然後一定要按enter , fd 0 才會ready。
Beej's Guide to Network Programming 7.2. select():同步 I/O 多工
也有提到"如果你用一行緩衝區(buffer)的終端機,那麼你從鍵盤輸入資料後應該要盡快按下
Enter,否則程式就會發生 timeout。"
1.請教什麼是一行緩衝區?
2.為什麼程序起來後,還需要按enter, stdin才會ready? stdin 緩衝區裏面是還有東西
沒清空?
3.
https://imgur.com/Mua5xCJ
為什麼程序不會read newline?
請問有人能解答嗎 ?
謝謝
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 61.216.7.85 (臺灣)
※ 文章網址: https://www.ptt.cc/bbs/LinuxDev/M.1575456241.A.73E.html
→ dododavid006: 1,2 都是因為預設 tty 或 pty 是 line buffer 的, 12/04 20:31
→ dododavid006: 就是要到輸入換行你才讀的到東西,你可以看看 12/04 20:33
→ dododavid006: man 3 stdin 底下的 Notes 有提到,也可看看 stty 12/04 20:33
→ dododavid006: 這個指令, 3 應該是說因為你的程式並沒有把東西讀 12/04 20:34
→ dododavid006: 走,所以變成 shell 去讀到了 12/04 20:34
→ anoymouse: 不懂為什麼3 我的程式沒有把new line讀進去? 12/05 10:49
→ wens: 因為你只有select沒有read. select只是告訴你有沒有資料可以 12/05 11:21
→ wens: 讀取。真的要讀取要另外read。 12/05 11:21
→ anoymouse: 好瞭解 剛剛用getchar收到newline 了 12/05 13:07