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

How to change my Fortran code to run it as a background process?

我在 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 来隐藏命令 window 但它似乎在 Fortran 中不起作用。

命令window真的很烦,请问有什么简单的方法可以让黑色window消失吗?

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

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

这是在没有 window 的情况下编写代码 运行 的基础知识。但是,这并没有使它成为 运行 "in the background"。您可能需要更多代码来执行此操作。 (如果你的编译器支持 EXECUTE_COMMAND_LINE,你可以指定 WAIT=.FALSE. 到 运行 异步...)

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

现在让您的 Fortran 代码看起来像这样(这是针对 Intel 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

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