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

标签 c file pointers

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

谢谢!

最佳答案

这要看情况。你当然应该记录什么是 fopen(3) 函数-ing FILE 句柄以及期望的函数fclose(3)它。

您可以将 FILE* 放入 struct 中,但您应该就谁以及何时应该读取和/或写入和关闭文件有一个约定。

请注意,打开的文件是进程(=您正在运行的程序)中的一些扩展资源。顺便说一句,它也是 operating systemfile 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/

相关文章:

c++ - 调用 C++ 函数并更改其参数(链表)

c - 解决多重包含问题

c++ - include后找不到sql函数

php - 如何在php中使文件下载仅将文件路径保存在数据库中

Linux - 如何在删除文件名中的模式时批量重命名文件

c - 不太确定,memcpy 上有段错误吗?

c++ - 如何确定网络堆栈何时准备好再次打开到同一主机/端口的套接字?

计算字符数组中的字符?

c - 在 C 文件中存储和恢复结构

ios - 无法理解 NSError/NSObject 指针传递行为