当程序提前终止时,Fortran临时文件会发生什么?

时间:2015-05-15 14:21:30

标签: file fortran

具体来说,我想知道如果程序在临时单元上发出close()之前终止(或被杀死),Fortran中的临时文件是否会被删除。

2 个答案:

答案 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