在UNP中出现的一个从IO函数:readline,拥有自己的对外暴露的内部缓冲区(非stdio缓冲区)。
在使用select的echo客户端中,如果使用文本文件而不是stdin来作为数据源,那么不同于命令行交互,数据的传输速度将被拉到很快的速度。这时候会发现本该出现的“回声”出现了一些丢失。
这是因为readline读取数据,并且返回。在这期间,如果有新分组到到达,会存在readline的内部缓冲区中。但是系统函数select并不知道这个内部缓冲区的存在,也自然不会使用这些数据了。
但是,这个内部缓冲区的状态是可以被知道的,所以需要用户自己处理程序进行处理。