首页 > 解决方案 > 为什么 Linux 系统调用 read() 返回小于请求的大小?

问题描述

成功时,read(2)系统调用返回读取的字节数。手册页说

如果此数字小于请求的字节数,则不是错误;这可能会发生,例如因为现在实际可用的字节较少(可能是因为我们接近文件结尾,或者因为我们正在从管道或终端读取),或者因为 read() 被中断信号。

为了确保您已阅读完整文件,解决方案显然是read()再次调用,因为返回0总是意味着 EOF。但是,我的问题是除了接收信号之外,还有什么原因可能会在常规文件上read()返回更少的字节?对于常规文件,“接近文件结尾”如何减少读取的字节数?

标签: file-iolinux-kernelsystem-calls

解决方案


推荐阅读