QProcess执行c ++文件

时间:2014-08-31 20:57:24

标签: qt

在某些地方,它建议,我不能使用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();
}        

1 个答案:

答案 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。我猜这不是你想要的。