我想问一下,在c编程中我们使用指针打开一个文件,同时我们可以打开同一个文件但没有得到任何错误?有限制吗?序列也很重要,如
f1= fopen("abc.txt",r)
f2= fopen("abc.txt",w)
f2先关闭,否则f1也可以先关闭
答案 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;
}