具体来说,我想知道如果程序在临时单元上发出close()
之前终止(或被杀死),Fortran中的临时文件是否会被删除。
答案 0 :(得分:2)
Fortran标准表示文件在“正常终止程序”时被删除。虽然许多实现可能会尝试在异常终止时删除暂存文件,但我不建议依赖于此。特别是,如果你“杀死”程序,那么暂存文件将被删除的可能性要小得多。
答案 1 :(得分:1)
刚刚创建了一个测试代码来回答我的问题。我使用Intel iFort编译器在OS X Mac上运行下面的代码。 iFort将临时文件放在$ TMPDIR中,测试在暂停期间显示暂存文件。当程序正常退出时以及使用ctrl-c终止时,暂存文件会消失。这对于我已经将多GB临时文件写入本地临时空间的MPI程序非常有用,因为如果程序被用户或调度程序提前终止,我不希望这些文件持久存在。
program test
open(unit=20,status='scratch')
write(20,*) (i, i = 1,100000)
write(*,*) 'pausing, type ls -la $TMPDIR/f* to see the scratch file'
write(*,*) 'hit enter to continue or ctrl-c to interrupt and stop'
read(*,*)
close(20)
end