如何更改我的Fortran代码以将其作为后台进程运行?

时间:2015-01-19 01:12:27

标签: fortran

我在Windows上编写了一个Fortran程序,现在我想让它作为后台进程运行。我的代码是这样的:

PROGRAM test
implicit none
integer a
a = calculator()
print *, a !now I print the result on the screen and I can also write it to a file.
END PROGRAM

获得结果大约需要10分钟,我会在其他程序中多次调用它。

我知道在C ++中我们可以简单地将/console更改为/window来隐藏命令窗口,但似乎在Fortran中不起作用。

命令窗口真的困扰我,是否有一种简单的方法可以让黑色窗口消失?

1 个答案:

答案 0 :(得分:4)

嗯,不,在C ++中它需要更多。

虽然我可以告诉您如何在没有窗口的情况下运行Fortran代码,但您希望屏幕输出在哪里?

这是使代码在没有窗口的情况下运行的基础知识。但这并不能使它“在后台”运行。您可能需要更多代码才能执行此操作。 (如果您的编译器支持EXECUTE_COMMAND_LINE,您可以指定WAIT = .FALSE。以异步方式运行它...)

首先,您希望将程序构建为Windows,而不是控制台应用程序。通常,这是通过链接器选项/子系统来完成的:窗口(而不是控制台)。

现在让您的Fortran代码看起来像这样(这是针对英特尔Fortran):

integer(DWORD) function WinMain( hInstance, hPrevInstance, lpszCmdLine, nCmdShow )
!DEC$ ATTRIBUTES STDCALL, DECORATE, ALIAS : 'WinMain' :: WinMain

use ifwinty

implicit none

integer(HANDLE) hInstance
integer(HANDLE) hPrevInstance
integer(LPVOID) lpszCmdLine
integer(DWORD) nCmdShow

... Your code here

WinMain = 0
return
end function WinMain

您正在将代码从程序更改为函数。它将在没有任何可见用户界面的情况下运行。