如何在分叉而不是共享时复制文件描述?

时间:2013-04-01 12:22:08

标签: linux unix posix fork file-descriptor

当一个进程分叉时,子进程将与其父进行分享在分叉之前打开的文件描述。

有没有办法让孩子拥有自己的文件描述副本(包括偏移量和文件状态标志)?

我需要它,因为我不希望父和子共享文件的相同偏移量;如果一个进程已完成读取,我不希望更改第二个进程的文件偏移量。

1 个答案:

答案 0 :(得分:0)

既有“打开文件描述符”又有“打开文件描述”。使用open()打开文件时,将同时创建文件描述符和文件描述。当文件描述符重复时(dup()dup2()),这两个描述符引用相同的打开文件描述。

fork()上,父项中的文件描述符被复制(复制)在子项中;父节点和子节点中的描述符都指向相同的打开文件描述。

  

子进程应拥有自己父级文件描述符的副本。每个子文件描述符都应引用相同的打开文件描述以及父文件的相应文件描述符。

没有办法让它工作 - 否则你必须关闭并重新打开文件以获得单独的打开文件描述。