Linux系统调用中fcntl中F_DUPFD的用法是什么

时间:2017-09-25 04:19:05

标签: c linux posix

我试图理解这行代码的含义:

int dfd;

fd2 = fcntl(dfd,F_DUPFD);

1 个答案:

答案 0 :(得分:2)

旨在将fd2设置为引用与dfd相同的打开文件记录的另一个文件描述符。

应该有第三个参数,即要返回的最低可接受文件描述符。由于缺少第三个参数,调用可能会做任何事情。正确的通话可能如下所示:

fd2 = fcntl(dfd, F_DUPFD, 0);

来自fcntl man page

  

F_DUPFD(int)

     

找到大于或等于arg的编号最小的可用文件描述符,并使其成为fd的副本。这与dup2(2)不同,dup(2)完全使用指定的描述符。

     

成功时,返回新的描述符。

     

有关详细信息,请参阅root |-- value: struct (nullable = true) | |-- version: struct (nullable = true) | | |-- major: integer (nullable = true) | | |-- minor: integer (nullable = true) | |-- guid: string (nullable = true) (2)。