首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >多个` file‘对象可以共享相同的文件描述符吗?

多个` file‘对象可以共享相同的文件描述符吗?
EN

Stack Overflow用户
提问于 2018-08-30 00:24:54
回答 1查看 672关注 0票数 1

来自APUE

每个标准I/O流(即每个FILE对象)都有一个关联的file描述符。

在一个程序中,多个FILE对象可以共享相同的文件描述符吗?

如果是,是否使用相同的文件描述符多次调用fdopen(),每个描述符都返回指向不同FILE对象的指针?

如果我在指向给定的flcose()对象的指针上使用FILE,那么如果另一个FILE对象共享相同的文件描述符,那么FILE对象的文件描述符是否仍然存在并连接到该文件?

谢谢。

EN

回答 1

Stack Overflow用户

发布于 2018-08-30 00:31:12

是的,但这是一个非常糟糕的主意,因为fclose关闭了相关的fd,因此,您只能在没有它的情况下对其中一个fd进行fclose,从而在不再属于FILE的文件描述符上生成close,并且可能已被重新分配用于其他用途。原则上,即使在进程终止时也会发生这种情况,除非您使用_exit/_Exit或异常终止。

一个相关的问题是,您是否可以使用不同的文件描述符(每个描述符由dup为同一基础打开的文件描述生成多个文件。因此,答案也是肯定的,虽然这可能是个坏主意,但POSIX有一些规则规定,如果您遵循这些规则,就可以使其安全:

2.5.1文件描述符与标准I/O流的交互

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

https://stackoverflow.com/questions/52087692

复制
相关文章

相似问题

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