Bash stderr和stdout重定向失败

Bash stderr和stdout重定向失败,bash,fortran,Bash,Fortran,我有一个FORTRAN程序输出,我想重定向到文件。我以前做过,现在用 $myprog.out>>out.txt 2>&1 出于某种原因,这是行不通的。我用另一个简单的测试程序来测试它 $myprog.test>>out.txt 2>&1 它是有效的 我运行myprog.out,输出像往常一样进入屏幕,但重定向似乎失败了!它一直在工作,现在似乎已经停止工作。这很奇怪。我注释掉了一些我不再需要的打印语句,重新编译,然后带重定向就不起作用了 我的

我有一个FORTRAN程序输出,我想重定向到文件。我以前做过,现在用

$myprog.out>>out.txt 2>&1
出于某种原因,这是行不通的。我用另一个简单的测试程序来测试它

$myprog.test>>out.txt 2>&1
它是有效的

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


我的输出显然有些不同,但如何诊断它的去向呢?

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


您可以尝试滚动到out.txt的末尾,看看是否有输出吗?

您可能需要刷新输出。例如,见。我想这取决于你的编译器。因为只有Fortran 2003标准包含flush()语句和确定与stdout/stderr单元对应的数字的能力

然而,在gfortran(例如)中,您可以使用与Unix文件描述符等价的内部过程:对于stdin,UNIT=5;对于stdout,UNIT=6;对于stderr,UNIT=0

PROGRAM main

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

END PROGRAM main

谢谢,是的,我知道>>附录,相同的结果(或结果失败)发生在>上,但我只是使用>>因为这是脚本中失败的一行,所以我只是尝试让这一行工作。我从一个空文件out.txt开始,所以这不是问题。谢谢Dennis和一个输出行isprint*的示例,“| ||||||运行时=”,runtime,“| |||||||”您可能需要显示程序中的一些代码,包括一些注释掉的行。它是否直接写入tty而不是标准输出?谢谢Dennis和一个输出行isprint*的示例,“| ||||||||||运行时=”,runtime,“| ||||||感谢。我会试一试,然后再报告。我刚刚尝试过用0、5和6单位玩。汉克斯刚站起来,它就成功了。非常感谢你Kemiisto@Tommy:“当您决定哪个答案对您最有帮助时,单击答案左侧的复选框大纲,将其标记为已接受的答案。”来自SO FAQ()