在使用该文件的每个函数的开头和结尾使用fopen()
和fclose()
是否更好,或者将文件指针传递给每个函数是否更好?甚至将文件指针设置为文件所关联的struct的元素。
我有两个项目正在进行,每个项目使用一个方法(因为我考虑在我开始第一个之后传递文件指针)。
当我说得更好时,我的意思是速度和/或可读性。什么是最佳实践?
谢谢!
答案 0 :(得分:0)
这取决于。你当然应该记录fopen(3)函数是什么函数 - FILE
句柄以及期望fclose(3)它的函数。
您可以将FILE*
放在struct
中,但您应该有一个关于文件的读取和/或写入和关闭时间和时间的约定。
请注意,打开的文件是进程中的一些扩展资源(=正在运行的程序)。顺便说一句,它也是operating system和file system具体的。 FILE
句柄已缓存,请参阅fflush(3)& setvbuf(3)
在小型系统上,fopen
- ed文件句柄的最大数量可能只有几十个。在当前的Linux桌面上,进程可能有几千个已打开file descriptors(内部FILE
正在保留其缓冲区)。在任何情况下,它都是一个相当珍贵和恐慌的资源(在Linux上,你可以用setrlimit(2)限制它)
请注意w.r.t磁盘IO非常慢。 CPU。