作者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://webptt.com/cn.aspx?n=bbs/LinuxDev/M.1575456241.A.73E.html
1F:→ dododavid006: 1,2 都是因为预设 tty 或 pty 是 line buffer 的, 12/04 20:31
2F:→ dododavid006: 就是要到输入换行你才读的到东西,你可以看看 12/04 20:33
3F:→ dododavid006: man 3 stdin 底下的 Notes 有提到,也可看看 stty 12/04 20:33
4F:→ dododavid006: 这个指令, 3 应该是说因为你的程式并没有把东西读 12/04 20:34
5F:→ dododavid006: 走,所以变成 shell 去读到了 12/04 20:34
6F:→ anoymouse: 不懂为什麽3 我的程式没有把new line读进去? 12/05 10:49
7F:→ wens: 因为你只有select没有read. select只是告诉你有没有资料可以 12/05 11:21
8F:→ wens: 读取。真的要读取要另外read。 12/05 11:21
9F:→ anoymouse: 好了解 刚刚用getchar收到newline 了 12/05 13:07