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

如何更改我的Fortran代码以作为后台进程运行?,fortran,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++中我们可以简单地改变/控制台

我已经在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++中我们可以简单地改变/控制台/窗口来隐藏命令窗口,但是在FORTRAN中似乎不起作用。


<命令窗口真的让我感到困扰,有没有一个简单的方法来让黑窗口消失?< /P> < P> >好吧,不,C++中需要多一点。

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

下面是使代码在没有窗口的情况下运行的基础知识。不过,这并不能让它在后台运行。您可能需要更多的代码来实现这一点。如果编译器支持执行命令行,则可以指定WAIT=.FALSE。要异步运行它

首先,您希望将程序构建为Windows应用程序,而不是控制台应用程序。通常,这是通过链接器选项/子系统完成的: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

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

我可以通过管道获得结果。更进一步,什么是真实的背景?后台的服务将是一个在您执行其他操作时继续运行的程序,而不是调用程序等待生成的程序完成。