【发布时间】:2019-04-04 19:26:09
【问题描述】:
我在这里找到了解决方案Duplicating file pointers?
FILE *fp2 = fdopen (dup (fileno (fp)), "r");
但是根据http://man7.org/linux/man-pages/man2/dup.2.html,
dup 创建的新文件描述符,它们引用相同的打开文件描述符,因此共享状态。那不是我想要的。我想创建一个全新的 IO 对象,它引用旧 FILE * 指向的文件
有什么办法吗?
添加: 我实际上没有文件名。我正在做一个对象的深拷贝,它包含一个打开的 FILE 指针,所以我也必须复制它。
【问题讨论】:
-
你能简单地打开文件两次(只读)吗?
-
你需要这个做什么?这是XY problem吗?
-
只需打开文件两次。
-
@WeatherVane 我实际上没有文件名....我正在对一个对象进行深层复制,并且该对象持有一个打开的 FILE 指针,所以我也必须复制它