Unix:如何在不关闭底层文件描述符的情况下销毁/释放 FILE 对象?

问题描述 投票:0回答:1

假设我有一个文件描述符

fd
,我从
pipe()
获得它,我想逐行读取它。

我打电话给

FILE* f = fdopen(fd, "r")
。现在我有了一个
FILE*
对象。

如果我想停止逐行阅读

fd
但仍将
fd
本身用于其他用途,该怎么办?如果我调用
fclose(f)
,它也会关闭文件描述符本身。

有没有办法在不关闭描述符的情况下释放

FILE
对象?

file unix
1个回答
0
投票

有没有办法在不关闭描述符的情况下释放

FILE
对象?

不可移植 - 将文件描述符与流关联意味着该流负责底层文件,因此,如您所知,

fclose()
将关闭它。

您最好的选择是

dup()
fd
fopen()
原件或副本,然后在
fclose()
之后使用另一个。

© www.soinside.com 2019 - 2024. All rights reserved.