如何让命令提示符等待程序退出?

时间:2015-03-21 19:46:56

标签: c++ windows user-interface console console-application

我有一个Windows程序,可以不使用参数作为GUI程序运行,也可以将参数作为控制台程序运行。

问题是:如果我将其编译为/SUBSYSTEM:WINDOWS并运行此代码

FILE *NotNeeded;
if (!AttachConsole(ATTACH_PARENT_PROCESS))
{
    AllocConsole();
}
freopen_s(&NotNeeded, "CONOUT$", "w", stdout);
std::cout << "Console mode\n";

当我在GUI模式下没有参数(显然)运行时,它可以工作。当我使用Visual Studio中的参数运行时,它会打开一个控制台并显示正常。

但是当我从命令提示符运行它时,cmd并没有等待我的程序退出,所以它看起来像

D:\Path1\Path2\> MyApp.exe parameter

D:\Path1\Path2\> Console mode
_

我尝试编译为/SUBSYSTEM:CONSOLE,然后在我不需要控制台时使用FreeConsole(),但它仍会显示很短的时间。这是我发现的最佳解决方案,但我想知道是否还有其他办法。如果子系统为cmd.exe,则WINDOWS似乎无法等待。 (start /WAIT不是一个不错的选择。)

0 个答案:

没有答案