是否最好在使用该文件的每个函数的开头和结尾处使用 fopen()
和 fclose()
,还是传递该文件更好指向每个函数的指针?或者甚至将文件指针设置为与文件相关的结构的元素。
我有两个项目正在进行,每个项目都使用一种方法(因为我在开始第一个项目后考虑传递文件指针)。
当我说更好时,我指的是速度和/或可读性。最佳实践是什么?
谢谢!
最佳答案
这要看情况。你当然应该记录什么是 fopen(3) 函数-ing FILE
句柄以及期望的函数fclose(3)它。
您可以将 FILE*
放入 struct
中,但您应该就谁以及何时应该读取和/或写入和关闭文件有一个约定。
请注意,打开的文件是进程(=您正在运行的程序)中的一些扩展资源。顺便说一句,它也是 operating system和 file system具体的。并且FILE
句柄被缓冲,参见fflush(3) & setvbuf(3)
在小型系统上,fopen
-ed 文件句柄的最大数量可能只有几十个。在当前的 Linux 桌面上,一个进程可能会打开数千个 file descriptors (内部 FILE
与其缓冲区一起保存)。无论如何,它都是一个相当珍贵和稀缺的资源(在 Linux 上,您可以使用 setrlimit(2) 来限制它)
请注意,磁盘 IO 非常慢。 CPU。
关于c - 有没有更好的方法来管理C中的文件指针?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28473455/