Nak*_*ble 13 c linux filesystems system-calls
很明显,一般来说,read(2)系统调用返回的字节数少于要求读取的字节数.但是,相当多的程序都假设在使用本地文件时,read(2)永远不会返回少于所询问的内容(当然,除非文件更短).
所以,我的问题是:在Linux上,在这种情况下,如果从打开的文件读取并且没有遇到EOF并且读取的数量最多是几千字节,那么读取(2)的返回数量少于请求的数量?
一些猜测:
mar*_*k4o 12
如果文件中剩余的字节数小于nbyte,如果read()请求被信号中断,或者文件是管道或FIFO或特殊文件并且少于nbyte,则 返回的值可能小于 nbyte nbyte字节可立即读取.
基于磁盘的文件系统通常使用不间断读取,这意味着读取操作通常不会被信号中断.基于网络的文件系统有时使用可中断读取,这可以返回部分数据或不返回数据.(在NFS的情况下,这可以使用intrmount选项进行配置.)它们有时也会实现超时.
请记住,偶数/某些/任意/文件/路径可能引用FIFO或特殊文件,因此您认为常规文件可能不是.因此,即使可能不太可能,也应该处理部分读取.
| 归档时间: | 
 | 
| 查看次数: | 3462 次 | 
| 最近记录: |