复制文件指针?
只是一个简单的问题:有没有办法复制文件指针(由fopen()
返回的那些),类似于dup()
如何复制open()
等函数返回的文件处理程序?
基本上,我希望能够做到这样的事情:
FILE *fp = fopen("some_file", "r"); FILE *fp2 = /* do something to duplicate the file pointer */; fclose(fp); // fp2 is still open /* do something with fp2 */ fclose(fp2);
您可以使用fileno
来获取FILE*
的描述符,将其fdopen
,然后使用fdopen
从新描述符中获取新的FILE*
。
FILE *fp2 = fdopen (dup (fileno (fp)), "r");
我打开了两次相同的文件并分配了两个指针,最后分别关闭了两个。 在我的情况下,我必须使用一个指针在文本窗口中显示内容,并使用另一个指针处理文件中的数据。 例如
//define global variables FILE *fp1 = fopen("some_file", "r"); //fp1 used in functioncall to display textbuffer fclose(fp1); //fp2 used in functioncall to process data fclose(fp2);