在我的应用程序中,创建了一个Tun接口,并且该进程在select(2)循环中继续使用read(2)读取关联的fd。但是,当我调试应用程序中的问题时,我发现在某些时候,对Tun文件描述符的read(2)操作可以返回零。这可能吗?会发生什么情况?
先谢谢了。 木本
答案 0 :(得分:1)
以下是联机帮助页中read(2)click here
上的信息返回值
成功后,返回读取的字节数(零表示文件结束),文件位置按此数字前移。如果此数目小于请求的字节数,这不是错误;例如,这可能是因为当前实际可用的字节较少(可能是因为我们接近文件末尾,或者因为我们正在从管道或终端读取),或者因为read()被a中断了。信号。如果出错,则返回-1,并正确设置errno。在这种情况下,无需说明文件位置(如果有)是否更改。