文件打开指针

时间:2011-03-06 18:21:17

标签: c linux

我想问一下,在c编程中我们使用指针打开一个文件,同时我们可以打开同一个文件但没有得到任何错误?有限制吗?序列也很重要,如

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

f2先关闭,否则f1也可以先关闭

2 个答案:

答案 0 :(得分:2)

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

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

编辑:至于为什么你经常打开许多文件而不是FOPEN_MAX表示:它非常简单:为了保证打开N个文件的能力,你几乎需要预先分配您将用于这些文件的所有空间(例如,每个文件的缓冲区)。由于大多数程序无论如何都不会一次打开多个文件,因此他们会尽量保持相当低的数字,以避免在空间上浪费太多内存,而大多数情况下都不会使用。

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

答案 1 :(得分:1)

这将为您提供系统的答案。我的16岁,FWIW。

#include <stdio.h>

int main(void)
{
    printf("%d\n", FOPEN_MAX);
    return 0;
}