【发布时间】:2011-07-09 06:17:57
【问题描述】:
参考this question 关于 read() 和 write(),我想知道每个打开的文件描述是否都有自己的读写缓冲区,或者如果一个文件有一个单独的读写缓冲区一次打开了多次。我很好奇,因为这会对重叠写入同一文件的确切情况产生影响。也许这在 Unix 中有所不同?
(据我了解,“文件描述”是指有关打开文件的信息/选项,例如当前标记位置。相反,“文件描述符”仅指进程中用于引用的数字描述。)
【问题讨论】:
-
我认为低级 Unix I/O 大多是无缓冲的。但如果作为流打开(fopen 等),则会为 FILE 结构创建一个缓冲区。
-
@seand 据我了解,除非使用 O_DIRECT 打开文件,否则默认情况下会缓冲读/写。基于流的 i/o 库实际上添加了第二层缓冲,这一次是在这个过程中。