我在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中不起作用。
命令窗口真的困扰我,是否有一种简单的方法可以让黑色窗口消失?
答案 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
您正在将代码从程序更改为函数。它将在没有任何可见用户界面的情况下运行。