【发布时间】:2014-06-07 12:30:53
【问题描述】:
为什么没有真正的文件描述符克隆机制如果可能,就像磁盘文件一样。
POSIX:
从这些系统调用之一成功返回后,旧的和 新的文件描述符可以互换使用。他们指的是 相同的打开文件描述(参见 open(2)),从而共享文件偏移量 和文件状态标志;例如,如果文件偏移量由 在其中一个描述符上使用 lseek(2),偏移量也会改变 为另一个。
窗户:
复制句柄指的是与原始句柄相同的对象。因此,对对象的任何更改都会通过两个句柄反映出来。例如,如果您复制一个文件句柄,则两个句柄的当前文件位置始终相同。对于具有不同文件位置的文件句柄,请使用 CreateFile 函数创建共享对同一文件的访问权限的文件句柄。
使用克隆原语的原因:
在处理文件存档时,我希望存档中的每个文件都必须能够独立访问。文件存档的行为应该有点像虚拟文件系统。
文件类型检查。能够克隆文件偏移量可以在不影响原始位置的情况下读取文件的一小部分。
【问题讨论】:
-
我认为它存在:dup()。 man7.org/linux/man-pages/man2/dup.2.html 是的,dup() 共享相同的偏移量,但仍保持不同的描述符标志。或者你总是可以将文件映射到两个不同的描述符中,并使用不同描述符的不同偏移量来解决你的问题?
-
@PeterTeoh 实际上,我想分享标志而不是偏移量
标签: linux-kernel handle file-descriptor dup windows-nt