首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >同一个文件的2个文件描述符

同一个文件的2个文件描述符
EN

Stack Overflow用户
提问于 2021-05-19 12:09:19
回答 1查看 79关注 0票数 1

对于已经打开的文件,我有一个文件描述符>0。我想在该文件中添加第二个文件描述符。我知道,如果再次用第二个文件描述符打开文件,这是可能的,但问题是,在我的代码中,我不知道文件的名称。

所以我想知道我能不能这样做: fd2 = fd1;

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-05-19 14:12:35

您可以复制文件描述符,为同一个打开的文件描述返回一个新的、不同的句柄,其中一个是dup

代码语言:javascript
复制
#include <unistd.h>
int fd2 = dup(fd1);

或使用fcntl/F_DUPFD

代码语言:javascript
复制
#include <fcntl.h>
int fd2 = fcntl(fd1, F_DUFPD, 0); // consider F_DUPFD_CLOEXEC !

因为fd2和fd1现在引用的是,所以它们“共享”底层开放文件描述的某些属性:

write-only)

  • file
  • 状态标志(非阻塞、只追加等)
  • 访问模式(只读、读-写、位置(在其中读取/查找)将反映在other)

    中。

如果您在fd2上更改上述内容之一,则该更改将在fd1中可见,因为两者都引用相同的底层I/O结构。在跨进程(“继承”)重复文件描述符时,也会发生同样的情况。

描述符本身只有一个有趣的属性,即FD_CLOEXEC,它控制描述符是否会在execve调用中被保留(继承)。对于每个描述符,这可能有所不同。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/67603002

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档