【发布时间】:2017-09-25 04:19:05
【问题描述】:
我试图理解这行代码的含义:
int dfd;
fd2 = fcntl(dfd, F_DUPFD);
【问题讨论】:
我试图理解这行代码的含义:
int dfd;
fd2 = fcntl(dfd, F_DUPFD);
【问题讨论】:
它旨在将fd2 设置为另一个引用与dfd 相同的打开文件记录的文件描述符。
应该有第三个参数,返回的可接受的最低文件描述符。由于缺少第三个参数,因此该调用几乎可以做任何事情。正确的调用可能如下所示:
fd2 = fcntl(dfd, F_DUPFD, 0);
F_DUPFD(整数)找到大于或等于
arg的最小编号的可用文件描述符,并使其成为fd的副本。这与dup2(2) 不同,后者完全使用指定的描述符。成功时,返回新的描述符。
详情请参阅
dup(2)。
【讨论】: