我正在尝试执行一个用VS创建的相对简单的exe(需要获得一些输入)。 使用QProcess:
QProcess *process = new QProcess(this);
QDir::setCurrent(entire_path);
process->start(exe_name, QStringList() << ""); // for empty args
事实是,当我关闭程序时,它会说我的程序(我正在尝试的程序)
执行),在进程中被销毁。
此外,如果我使用process-&gt; state(),它返回值2 - 这意味着它正在运行。
但是,事情是没有节目出现。
编辑:最终解决方案需要将IO重定向到文件。
编辑2:我也尝试从c ++类打开exe,并在Qt中使用该类,但它只是用这个exe打开cmd。如果我使用标准c ++ main中的那个类,IO来自文件,但是使用Qt,它只是不起作用。
我尝试打开另一个程序,比如calc,它运行起来了。 所以我不知道问题是什么......
顺便说一句,我找了这样的其他问题,没找到任何帮助......答案 0 :(得分:3)
您应该使用QProcess::startDetached
。
由于QProcess
类被设计为QIODevice
(它继承QIODevice
),QProcess
控件启动了本机进程并删除了QProcess
实例导致本机进程终止。
<强>更新强>
根据Qt文档,要从Windows GUI流程检索输出,您可以使用QProcess::ProcessChannelMode
QProcess::SeparateChannels
。来自Qt文档:
注意:Windows故意禁止仅从GUI输出 应用程序继承控制台。这不适用于输出 重定向到文件或管道。转发仅GUI的输出 尽管如此,您仍必须使用SeparateChannels 并通过读取输出并将其写入来自行转发 适当的输出渠道。