如何在Qt应用程序中通过终端命令运行分离的应用程序
How to run a detached application by terminal command in Qt application?
我想使用命令:
cd /opencv/opencv-3.0.0-alpha/samples/cpp/
./cpp-example-facedetect lena.jpg
在Qt应用程序中的button的clicked()方法上运行OpenCV的示例代码。所以我使用:
void MainWindow::on_btSample_clicked()
{
QProcess process1;
QProcess process2;
process1.setStandardOutputProcess(&process2);
process1.start("cd /opencv/opencv-3.0.0-alpha/samples/cpp");
process1.waitForBytesWritten();
process2.start("./cpp-example-facedetect lena.jpg");
}
我添加了必要的库来使用它。但在运行应用程序时出错。
QProcess: Destroyed while process ("./cpp-example-facedetect") is still running.
我该怎么修?如果我做的不对,请给我另一种方法。提前谢谢你!
我认为这里有两个问题:
首先,您的QProcess process2
可能在完成之前就超出了范围(即,由于超出范围而被销毁)。您要么必须等待它完成(使用waitForFinished()
,要么将其作为指针或成员变量(以更改作用域),然后将finished()
信号连接到某个处理槽(可以进行整理)。
这里的另一件事是,看起来你只想设置工作目录,所以我不认为将cd命令管道传输到你的可执行文件中是可行的,这样做会更容易:
编辑
我编辑了我的例子,向您展示如何获得输出:
QProcess myProc;
qDebug() << "Starting processn";
// Setup the working directory
QDir::setCurrent("D:\software\qtTest");
// Start the process (uses new working dir)
myProc.start("test.bat");
myProc.waitForFinished();
qDebug() << myProc.readAll();
我在大约2分钟内把它敲在了我的窗户盒子上,并为你做了测试。。。我可以在linux上完成,但这需要更长的时间,因为我必须启动它:o。。。但如果你愿意,我会的。
编辑2
如果你想完全分离流程:
QProcess myProc;
qDebug() << "Starting processn";
// Setup the working directory
QDir::setCurrent("D:\software\qtTest");
// Start the process (uses new working dir)
myProc.startDetached("test.bat");
现在我不能100%确定你能从这个过程中得到输出。。。它现在与你的Qt应用程序无关。。。
相关文章:
- make 命令创建 .file,但不创建应用程序文件
- 使用参数 + stdout + stderr 从命令行调用 MFC 应用程序
- 如何在构建Qt应用程序时运行git命令
- 指定在用户固定我的应用程序时用于运行应用程序的命令参数
- C++客户端/服务器聊天应用程序 - 从 Ubuntu 命令窗口扫描输入
- 来自另一个 IOS 应用程序的 IOS 应用程序命令
- 应用程序无法获取命令参数
- 在控制台窗口关闭(在Windows上)上优雅地关闭命令行应用程序
- 节点 js 我可以从用 C++ 编写的 windows 命令行应用程序中获取退出代码
- 如何在IDE中而不是在命令提示符中显示Visual Studio控制台应用程序输出
- qt 命令行应用程序编译
- 为在应用程序中作为函数参数传递的文件运行'iconv'命令C++
- 通过命令行编译和链接 Swift/Objective-C++ 应用程序
- 使用AWS-SDK-C 构建MacOS C 命令行应用程序
- MVC:命令行应用程序的实现问题
- 在应用程序内部调用linux命令行工具
- 如何将命令从c++应用程序返回到父终端
- Android本机应用程序命令行参数
- 使用 AssocQueryString 从 32 位应用程序获取 64 位应用程序命令,但不起作用
- 分布式应用程序命令/控制和监控