Bash stderr和stdout重定向失败
问题描述:
我有一个FORTRAN程序输出我想重定向到文件。我之前已经完成并使用了Bash stderr和stdout重定向失败
$myprog.out>>out.txt 2>&1
由于某种原因,这不起作用。我用另一种简单的测试程序
$myprog.test>>out.txt 2>&1
测试它和它的作品
我跑myprog.out和输出达到屏幕像往常一样,但重定向似乎失败!它正在工作,现在似乎已停止工作。这很奇怪。我评论了一些我不再需要的打印语句,重新编译,然后带重定向不起作用。
显然与我的输出有不同的东西,但如何诊断它将要发生什么?
答
您可能需要刷新输出。例如参见this SO topic。我想怎么做取决于你的编译器。因为只有Fortran 2003 Standard包含flush()语句以及确定与stdout/stderr单元对应的数字的功能。但是在gfortran中(例如),可以使用flush()内部过程和Unix文件描述符的等价物:UNIT = 5表示stdin,UNIT = 6表示stdout,UNIT = 0表示stderr。
PROGRAM main
PRINT *, "Hello!"
CALL flush(6)
CALL flush(0)
END PROGRAM main
答
With >>您每次运行时都会将程序的输出追加到out.txt中。
你可以尝试滚动到out.txt的结尾,看看你的输出是否在那里?
您可能需要显示程序中的一些代码,包括一些注释掉的行。它是否直接写入tty而不是stdout? – 2010-09-07 18:57:48
感谢Dennis和输出行的例子是 – Tommy 2010-09-07 20:44:45
print *,'||||||| runtime =',runtime,'|||||||||| – Tommy 2010-09-07 20:45:21