man select | cat -n
man select | cat -n | head -n +249 | tail -n +214 | cut -c 15-
select 的例子
示例代码 : select.c
设置粘贴
:set paste
问题 1
终端操作对于输入 标准 IO 是行缓冲的,没有按回车之前数据在标准 IO 的输入缓冲区里面;
数据仍然在标准 IO 的输入缓冲区导致程序结束后再次输出;
问题 2
按回车之后行缓冲机制把数据提交给内核,内核感知数据就绪可读,例子只判断数据可读但是数据没有读,意味着数据还是在标准 IO 的输入缓冲区;
注意
select ( IO 多路复用 ) 感知 IO 变化是一回事,对 IO 操作是另外一回事;