Home Articles

QProcess执行c文件

Asked
Viewed 1397 times
0

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

  • 4

    首先,QProcess :: execute()是a static method - 没有理由创建一个QProcess实例来使用它 . 如果使用QProcess :: start(),它将异步执行该进程 . 在检查返回代码之前,您必须先监听finished信号 .

    其次,你确定这是你的意图吗?

    QString program = "./home/naveen/sdj";
    

    在* nix文件系统中, ./ 表示在当前目录中启动 . 所以QProcess不会寻找 /home/naveen/sdj ,而是寻找 /yourProjectBuildPath/home/naveen/sdj . 我'm guessing that'不是你想要的 .

Related