来自APUE
每个标准I/O流(即每个
FILE对象)都有一个关联的file描述符。
在一个程序中,多个FILE对象可以共享相同的文件描述符吗?
如果是,是否使用相同的文件描述符多次调用fdopen(),每个描述符都返回指向不同FILE对象的指针?
如果我在指向给定的flcose()对象的指针上使用FILE,那么如果另一个FILE对象共享相同的文件描述符,那么FILE对象的文件描述符是否仍然存在并连接到该文件?
谢谢。
发布于 2018-08-30 00:31:12
是的,但这是一个非常糟糕的主意,因为fclose关闭了相关的fd,因此,您只能在没有它的情况下对其中一个fd进行fclose,从而在不再属于FILE的文件描述符上生成close,并且可能已被重新分配用于其他用途。原则上,即使在进程终止时也会发生这种情况,除非您使用_exit/_Exit或异常终止。
一个相关的问题是,您是否可以使用不同的文件描述符(每个描述符由dup为同一基础打开的文件描述生成多个文件。因此,答案也是肯定的,虽然这可能是个坏主意,但POSIX有一些规则规定,如果您遵循这些规则,就可以使其安全:
2.5.1文件描述符与标准I/O流的交互
https://stackoverflow.com/questions/52087692
复制相似问题