在某些地方它建议,我不能用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 Answer
首先,QProcess :: execute()是a static method - 没有理由创建一个QProcess实例来使用它 . 如果使用QProcess :: start(),它将异步执行该进程 . 在检查返回代码之前,您必须先监听finished信号 .
其次,你确定这是你的意图吗?
在* nix文件系统中,
./
表示在当前目录中启动 . 所以QProcess不会寻找/home/naveen/sdj
,而是寻找/yourProjectBuildPath/home/naveen/sdj
. 我'm guessing that'不是你想要的 .