在某些地方,它建议,我不能使用QProcess运行预先构建的c ++二进制文件。同时还有其他问题,人们正在使用QProcess执行shell脚本等,所以我很困惑。我可以使用QProcess执行预构建的c ++二进制文件。
此二进制文件读取文本文件并创建两个文本文件作为回报。
我创建了一个带GUI的基本UI,并且有一个按钮,当点击它时调用外部二进制文件。
使用execute
运行此操作会给我一个错误QIODevice: read: device not open
。当我使用start
时,不会报告任何错误。但是也没有创建输出文件。
任何想法是否允许在qt或其他方法中都需要遵循。
void MainWindow::on_startButton_clicked()
{
QString program = "./home/naveen/sdj";
QProcess *myProcess = new QProcess(this);
myProcess->start(program);
myProcess->waitForFinished();
qDebug() << myProcess->exitStatus();
qDebug() << myProcess->readAllStandardError();
}
答案 0 :(得分:4)
首先,QProcess :: execute()是a static method - 没有理由创建一个QProcess实例来使用它。如果使用QProcess :: start(),它将异步执行该进程。您必须先检查finished信号,然后才能检查返回代码。
其次,你确定这是你想要的吗?
QString program = "./home/naveen/sdj";
在* nix文件系统中,./
表示从当前目录开始。因此,QProcess不会查找/home/naveen/sdj
,而是会查找/yourProjectBuildPath/home/naveen/sdj
。我猜这不是你想要的。