gpt4 book ai didi

多个 `FILE` 对象可以共享同一个文件描述符吗?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:13 25 4
gpt4 key购买 nike

来自 APUE

Each standard I/O stream (i.e. each FILE object) has an associated file descriptor.

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

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

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

谢谢。

最佳答案

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

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

2.5.1 Interaction of File Descriptors and Standard I/O Streams

关于多个 `FILE` 对象可以共享同一个文件描述符吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52087692/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com