我想打开 10,000 个文件,文件名从abc25000
until 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
end
这段代码应该生成从以下位置开始的文件abc24000
until abc35000
但说到一半就停了下来
在文件 test-openFile.f90 的第 17 行(单位 = 26021,文件 = '')
Fortran 运行时错误:打开的文件太多
我需要做什么来修复上述代码?
此限制由您的操作系统设置。如果您使用的是 Unix/Linux 变体,您可以使用以下命令从命令行检查限制ulimit -n
,并使用它来提高它ulimit -n 16384
。您需要设置大于 10000 的限制,以允许 shell 打开的所有其他文件。您可能还需要管理员权限才能执行此操作。
我经常将运行 Fortran 程序的限制提高到 2048,但从来不会高达 10000。但是,我同意其他答案,如果可能的话,最好重组程序以在打开下一个文件之前关闭每个文件。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)