2017-09-22 69 views
0

如果我直接从Windows命令行(cmd)运行Qt应用程序,它将立即返回到shell,即使GUI继续运行;我假设它在父节点退出之前创建了第二个进程。从命令行运行Qt应用程序不会阻止

Qt application running while the terminal is at a new shell prompt

如果我运行Qt应用程序间接虽然,从一个批处理文件或Python脚本,它不行为相同的方式;它会阻止,直到应用程序实际上退出:

Qt application running while the terminal blocks

这是Qt的标准行为?在文档或其他任何地方我都找不到它。它可以定制?我更喜欢应用程序在从命令行运行时总是阻塞。

+0

我想它与控制台输出的上下文有关。修复应该特定于进程启动,而不是Qt。 – AlexanderVX

+0

为什么要运行应用程序以阻止交互式提示?它是否通过'AttachConsole(ATTACH_PARENT_PROCESS)'附加到其父控制台?否则,我可以看到的唯一原因是在'%errorlevel%'中设置退出代码。默认行为是存在的,因为在大多数情况下,让CMD等待GUI应用程序或通过'start'创建新控制台的控制台应用程序是没有意义的。 – eryksun

回答

1

这是正常的Windows行为。

在控制台控制台中,程序等待。 GUI程序不是。这些规则在start /?中指定(提到新行为是NT4到Windows 2000)。

因此Start /w c:\windows\notepad

+0

啊,你说得对;我一直在寻找特别的Qt,这使得它很难找到。原来,这已经在[超级用户](https://superuser.com/questions/908664/have-the-command-prompt-launch-an-application-like-notepad-and-block-until-it-是) –

相关问题