【发布时间】:2010-12-30 04:55:18
【问题描述】:
很明显,通常 read(2) 系统调用返回的字节数少于请求读取的字节数。然而,相当多的程序假设在处理本地文件时,read(2) 永远不会返回少于所要求的内容(当然,除非文件更短)。
所以,我的问题是:在 Linux 上,如果从打开的文件中读取并且没有遇到 EOF 并且正在读取的量最大为几千字节,那么在哪些情况下 read(2) 返回的值可能小于请求的值?
一些猜测:
- 接收到的信号是否可以像这样中断读取,但不会使其失败?
- 不同的文件系统会影响这种行为吗? jffs2有什么特别之处吗?
【问题讨论】:
-
哪些程序“假设在处理本地文件时,read(2) 的返回值永远不会低于所要求的值”?在一般情况下,这听起来像是一个错误。
-
例如 klibc utils 中的 fstype binary。似乎许多可以假设直接处理文件的低级程序都假设读取永远不会短。
标签: c linux filesystems system-calls