如何将我的 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
您正在将代码从程序更改为函数。它将 运行 没有任何可见的用户界面。
我在 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
您正在将代码从程序更改为函数。它将 运行 没有任何可见的用户界面。