Tun-fd上的read(2)返回零



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

提前谢谢。木质

这是read(2(上的手册页中的信息点击此处

返回值

成功后,将返回读取的字节数(零表示文件结束(,并将文件位置提前此数字。如果这个数字小于请求的字节数,则不是错误;例如,这可能是因为现在实际可用的字节更少(可能是因为我们接近文件末尾,或者是因为我们正在从管道或终端读取(,或者是由于read((被信号中断。出现错误时,返回-1,并适当设置errno。在这种情况下,未指定文件位置(如果有(是否更改。

最新更新