复制文件描述符并独立查找两者

时间:2019-02-16 20:14:12

标签: c linux file-descriptor

我有一个要复制的打开文件描述符,以便分别执行读取和查找操作。我看着

int dup(int old_fd)

系统调用。问题是它并不完全适合这里。手册页指出以下内容 http://man7.org/linux/man-pages/man2/dup.2.html

  

成功返回后,旧文件描述符和新文件描述符   可以互换使用。他们指的是相同的   打开文件描述(请参见open(2)),从而共享文件   偏移量和文件状态标志;例如,如果文件偏移为   通过在文件描述符之一上使用lseek(2)进行修改,   偏移量也会随之改变。

是否可以复制文件描述符,使它们完全独立?

2 个答案:

答案 0 :(得分:3)

否-至少不是在POSIX定义的机制中。

如果要完全独立于文件描述符,则需要避免共享的打开文件描述,这意味着一个独立的open()或等效文件。

有一种特定于Linux的机制可以完成我从未听说过的工作。但是,浏览http://man7.org/linux/man-pages/man2/上对Linux的系统调用并没有启发。

答案 1 :(得分:3)

在Linux中,打开/proc/<pid>/fd/<n>会打开当前在fd N 处打开的文件,但这是一个新副本,而不是像{{1} }和朋友。

这应该创建一个文件,其中包含dup(),一堆零字节,然后是bar。与使用foo的版本进行对比。

dup()