在Fortran 90中打开多个文件

Vij*_*jay 3 fortran fortran90

我想打开10,000个文件名从abc25000until 开始的文件abc35000,并将一些信息复制到每个文件中.我写的代码如下:

PROGRAM puppy
IMPLICIT NONE

integer :: i
CHARACTER(len=3) :: n1
CHARACTER(len=5) :: cnum
CHARACTER(len=8) :: n2

loop1: do i = 25000 ,35000  !in one frame

  n1='abc'
  write(cnum,'(i5)') i
  n2=n1//cnum
  print*, n2
  open(unit=i ,file=n2)

enddo loop1
Run Code Online (Sandbox Code Playgroud)

结束

这段代码应该从abc24000直到开始生成文件,abc35000但它停止大约一半的说法

在test test-openFile.f90的第17行(unit = 26021,file ='')

Fortran运行时错误:打开的文件太多

我需要做些什么来修复上面的代码?

Ded*_*tos 5

此限制由您的操作系统设置.如果您使用的是Unix/Linux变体,则可以使用命令行检查限制ulimit -n,并使用它进行提升ulimit -n 16384.您需要设置大于10000的限制,以允许shell打开的所有其他文件.您可能还需要管理员权限才能执行此操作.

我经常将限制高达2048来运行Fortran程序,但从未高达10000.但是,我回应其他答案,如果可能的话,最好重新构建程序以关闭每个文件,然后再打开下一个文件.