QProcess :: startDetached()不显示控制台窗口

我有一个GUI程序,通过单击button启动cli程序。 我想看看控制台窗口,不需要等到cli程序结束。 所以我使用这样的代码:

QProcess::startDetached("cmd.exe"); 

点击button后,我看不到控制台窗口。 但是请参阅任务pipe理器中的cmd.exe进程。

我尝试过使用system()命令,但它在cli程序结束之前冻结了我的应用程序。

有没有办法让窗口可见?

Solutions Collecting From Web of "QProcess :: startDetached()不显示控制台窗口"

这是预期的行为。 至少在Windows中, startDetached相当于使用DETACHED_PROCESS标志调用CreateProcess ,其中新进程不会继承其父控制台。 这是有道理的,在其他平台的方法会做类似的事情。

在这种情况下,您必须在新进程上使用AllocConsole手动分配一个新的进程(请注意,您可能需要将流处理重定向到新控制台),或尝试以不同的方式启动进程(请参阅CreateProcessfork )。

顺便说一句,原因system冻结你的应用程序是因为它是一个同步调用,所以它不会返回控件,直到其他进程完成。 你可以尝试从一个单独的线程调用system ,这样可以避免阻塞应用程序的主事件循环。