file-io - 为什么 Linux 系统调用 read() 返回小于请求的大小?
问题描述
成功时,read(2)
系统调用返回读取的字节数。手册页说
如果此数字小于请求的字节数,则不是错误;这可能会发生,例如因为现在实际可用的字节较少(可能是因为我们接近文件结尾,或者因为我们正在从管道或终端读取),或者因为 read() 被中断信号。
为了确保您已阅读完整文件,解决方案显然是read()
再次调用,因为返回0
总是意味着 EOF。但是,我的问题是除了接收信号之外,还有什么原因可能会在常规文件上read()
返回更少的字节?对于常规文件,“接近文件结尾”如何减少读取的字节数?
解决方案
推荐阅读
- javascript - Phaser 在我的 Phaser.Physics.Arcade.Sprite 上缺少一些方法
- arrays - Numpy Array - 当我们将 3 个元素放入第一个数组,将 4 个元素放入第二个数组时会发生什么?
- pointers - crossbeam_epoch::Shared::as_raw “将指针转换为原始指针(不带标签)”是什么意思?
- c# - 用 c# selenium 慢慢发送密钥
- python - 不是一个有效的选择 WTFORMS
- javascript - react - 使用 react-table 超出最大更新深度
- azure-table-storage - 天蓝色流分析查询太复杂?没有给出正确的输出,现在出错。接下来做什么
- android - 如何解决在 Android 上滚动 BackDropFilter 低 FPS
- python - 从 MongoDB 到 Pyspark DataFrame
- python - Python Valid Sudoku Board Checker 9x9 验证方块但不显示输出结果