我正在编写一个 UI 来为我的研究处理一些数字代码,但我在重定向代码输出时遇到了一些问题。
我相信代码是用 Fortran 90 编写的,不幸的是,我对 Fortran 的经验相当少。我正在运行 linux mint 15,但我无法使用 ./codepath > file 之类的语句。这些命令适用于 shell 脚本,因此我确信问题出在 fortran 中。
通常代码只是打印到终端窗口,所以我想知道是否出于某种原因 PRINT* 没有写入标准输出?我可以做另一个重定向,这样我就不必重写 Fortran 代码了吗?如果不是,我该如何将这些打印语句更改为标准输出?
编辑:作为引用,我正在谈论的程序部分如下所示:
IF (MOD(n,dn) .EQ. 0) THEN
IF ((DDnew .EQ. 0) .AND. (DDold .EQ. 0)) THEN
DDerr = 1
ELSE
DDerr=ABS(DDnew-DDold)
RRerr=ABS(MAXVAL(ff(:,:,4))-RRold)
ERRsum=DDerr+RRerr
print *, "ERROR =", ERRsum
CALL output(xx,yy,ff,cw,ycw)
END IF
END IF
最终目标是将这些打印重定向到 UI 程序中的文本字段,但我希望能够做到这一点而无需过多编辑 Fortran 代码,因此需要它才能正常工作。 :P
最佳答案
它可能打印到标准错误,该错误由终端拾取但不会被标准重定向拾取。你能试试这个吗:
./codepath > output.txt 2>&1
如果这不起作用,您可以发布一些 Fortran 代码吗?
打电话
CALL flush(6)
CALL flush(0)
在您的打印语句之后也可能有所帮助。
关于linux - Fortran 90 不写入标准输出?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17931976/