1

我正在编写一个 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

4

1 回答 1

4

它可能打印到标准错误,该错误由终端拾取,但不会被标准重定向拾取。你可以试试这个:

./codepath > output.txt 2>&1

如果这不起作用,您可以发布一些 Fortran 代码吗?

打电话

CALL flush(6)
CALL flush(0)

在您的打印报表之后也可能会有所帮助。

于 2013-07-29T20:04:59.733 回答