繁体   English   中英

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

[英]Can multiple `FILE` objects share the same file descriptor?

来自APUE

每个标准I / O流(即每个FILE对象)具有相关的文件描述符。

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

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

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

谢谢。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM