【问题标题】:Flush files at unexpected end of fortran program在 fortran 程序意外结束时刷新文件
【发布时间】:2013-11-06 12:56:45
【问题描述】:

我想知道当正在运行的 fortran 程序以意外方式结束时(例如外部停止),是否有一些技巧可以刷新(转储缓冲区)所有输出文件。如果有一种方法可以在语言中设置它会很棒,但是如果有外部方法(linux)也可能有用。我认为在这种情况下可能有一种写入缓冲区的方法......可能正在捕获信号?我不知道。

提前致谢。

动机:当程序出现意外结束时,转储缓冲区可能对调试非常有用,但如果仅在这种情况下转储,则可以避免消耗资源的不必要的“刷新”sintax .

【问题讨论】:

  • 如果你想尝试信号处理,请阅读你的编译器文档——我怀疑你可以捕捉/处理的信号已经被很好地关闭文件处理了。 (例如,您将无法处理终止信号)

标签: linux fortran buffer


【解决方案1】:

你可以使用

open(unit = 10, file = "toto")
....
call flush(10)

http://gcc.gnu.org/onlinedocs/gfortran/FLUSH.html

根据 vladimir F cmets 的说法,如果您的编译器支持 fortran 2003 标准,您可以使用 flush 作为声明。

open(unit = 10, file = "toto")
...
flush(10)

【讨论】:

  • 这是非标准的。在 Fortran 2003 中,flush 是一个语句,所以在没有 call 的情况下使用。
  • 我不认为这回答了这个问题 - 如果我理解正确,每次写入后刷新正是他想要避免的。 -- 正确答案只是“不”,至少不是通过 fortran 语言。
  • 谢谢乔治。我怀疑
猜你喜欢
  • 1970-01-01
  • 2013-12-21
  • 2012-06-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多