c - 文件打开指针

标签 c linux

我想问一下,在c编程中,我们使用指针打开一个文件,同时使用多少个指针,我们可以打开同一个文件而不会出错?有限制吗?顺序也很重要

f1= fopen("abc.txt",r)
f2= fopen("abc.txt",w)

是f2先关闭还是f1也可以先关闭

最佳答案

是的,大多数标准库对特定进程一次可以打开的文件数量施加了一些限制。但是,只要您对事情保持半理性,并且只在需要时打开文件,并在完成后关闭它们,这就很少成为问题。

您保证至少可以同时打开 FOPEN_MAX 个文件。在某些情况下,您可以打开更多,但是(没有其他地方施加的限制,例如操作系统资源不足)您可以打开那么多。

编辑:至于为什么你经常可以打开比 FOPEN_MAX 更多的文件 many 表示:这很简单:要保证打开 N 个文件的能力,你非常需要预先分配您要用于这些文件的所有空间(例如,为每个文件分配一个缓冲区)。由于大多数程序一次打开的文件永远不会超过几个文件,因此它们会尽量相当地保持该数量,以免在大多数不使用的空间上浪费太多内存。

然后,为了适应需要打开更多文件的程序,它们可以/将使用 realloc(或类似的东西)尝试根据需要分配更多空间。但是,由于 realloc 可能会失败,因此打开更多文件的尝试也可能会失败。

关于c - 文件打开指针,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5212461/

相关文章:

c++ - C/C++ 优化数据结构、数组数组或只是数组

c - 如何替换文件中特定人物的字符串

java - 通过 JNI 调用 Collections.sort

c - 如何在Linux中添加延迟而不放弃CPU周期

linux - GNU make 的安装目标是将文件推送到远程 SSH?

c - 为什么运行此代码时 cmd 会崩溃?

c - 对 `FindTheVolumeAndSurfaceArea' 的 undefined reference

c - gcc -o 错误命令后如何恢复源代码

c - C 中的 Shell 命令(使用 Execvp 时出错)

linux - 用于在列表中显示目录和内容的 Shell 脚本