Tun fd的read(2)返回零

时间:2018-11-23 02:00:27

标签: linux tun tun-tap

在我的应用程序中,创建了一个Tun接口,并且该进程在select(2)循环中继续使用read(2)读取关联的fd。但是,当我调试应用程序中的问题时,我发现在某些时候,对Tun文件描述符的read(2)操作可以返回零。这可能吗?会发生什么情况?

先谢谢了。 木本

1 个答案:

答案 0 :(得分:1)

以下是联机帮助页中read(2)click here

上的信息
  

返回值

     

成功后,返回读取的字节数(零表示文件结束),文件位置按此数字前移。如果此数目小于请求的字节数,这不是错误;例如,这可能是因为当前实际可用的字节较少(可能是因为我们接近文件末尾,或者因为我们正在从管道或终端读取),或者因为read()被a中断了。信号。如果出错,则返回-1,并正确设置errno。在这种情况下,无需说明文件位置(如果有)是否更改。