有没有更好的方法来管理C中的文件指针?

时间:2015-02-12 09:13:15

标签: c file pointers

在使用该文件的每个函数的开头和结尾使用fopen()fclose()是否更好,或者将文件指针传递给每个函数是否更好?甚至将文件指针设置为文件所关联的struct的元素。 我有两个项目正在进行,每个项目使用一个方法(因为我考虑在我开始第一个之后传递文件指针)。 当我说得更好时,我的意思是速度和/或可读性。什么是最佳实践?

谢谢!

1 个答案:

答案 0 :(得分:0)

这取决于。你当然应该记录fopen(3)函数是什么函数 - FILE句柄以及期望fclose(3)它的函数。

您可以将FILE*放在struct中,但您应该有一个关于文件的读取和/或写入和关闭时间和时间的约定。

请注意,打开的文件是进程中的一些扩展资源(=正在运行的程序)。顺便说一句,它也是operating systemfile system具体的。 FILE句柄已缓存,请参阅fflush(3)& setvbuf(3)

在小型系统上,fopen - ed文件句柄的最大数量可能只有几十个。在当前的Linux桌面上,进程可能有几千个已打开file descriptors(内部FILE正在保留其缓冲区)。在任何情况下,它都是一个相当珍贵和恐慌的资源(在Linux上,你可以用setrlimit(2)限制它)

请注意w.r.t磁盘IO非常慢。 CPU。