[英]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指定如果您遵循它们使其安全:
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.