在参照这个问题 https://stackoverflow.com/q/5200923/1586关于 read() 和 write(),我想知道每个打开的文件描述是否都有自己的读写缓冲区,或者当文件一次打开多次时,文件是否可能有一个读写缓冲区。我很好奇,因为这会影响对同一文件的重叠写入到底会发生什么。也许这在 Unix 之间有所不同?
(根据我的理解,“文件描述”是指有关打开文件的信息/选项,例如当前标记位置。相反,“文件描述符”仅指进程中用于引用描述的数字。 )
这在一定程度上取决于您是在谈论套接字还是实际文件。
严格来说,描述符从来没有自己的缓冲区;这只是一个handle到更深层次的抽象。
文件系统对象有自己的缓冲区,至少在需要时是这样。也就是说,如果程序写入的内容小于文件系统块大小,内核别无选择,只能读取 FS 块并将写入内容与现有数据合并。
该缓冲区附加到 vnode 并处于较低级别,可能是 inode。它由文件而不是描述符拥有。如果内存可用,它可能会保留很长时间。
在套接字的情况下,流(但不是具体的单个描述符)实际上具有它拥有的缓冲区。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)