Bash stderr和stdout重定向失败

时间:2010-09-07 18:17:51

标签: bash fortran

我有一个FORTRAN程序输出我想重定向到文件。我以前做过这个并使用

$myprog.out>>out.txt 2>&1

由于某种原因,这不起作用。我用另一个简单的测试程序测试它

$myprog.test>>out.txt 2>&1

并且有效

我运行myprog.out并且输出像往常一样进入屏幕,但重定向它似乎失败了!它工作,现在似乎已停止工作。这很奇怪。我评论了一些我不再想要的打印语句,重新编译然后带重定向不起作用。

我的输出显然有不同的内容,但如何诊断它的位置?

2 个答案:

答案 0 :(得分:4)

您可能需要刷新输出。请参阅示例this SO topic。怎么做取决于你的编译器我猜。因为只有Fortran 2003 Standard包含flush()语句并且能够确定与stdout / stderr单位对应的数字。

但是在gfortran中(例如)你可以使用flush()内在过程和Unix文件描述符的等价物:对于stdin,UNIT = 5,对于stdr,UNIT = 6,对于stderr,UNIT = 0。

PROGRAM main

  PRINT *, "Hello!"
  CALL flush(6)
  CALL flush(0)

END PROGRAM main

答案 1 :(得分:0)

使用>> ,每次运行时,都会将程序的输出附加到out.txt。

你可以尝试滚动到out.txt的末尾,看看你的输出是否存在?