使用QProcess启动应用程序和脚本

时间:2019-01-11 02:43:17

标签: qt

我已经编写了此功能来运行脚本或应用程序:

void TerminalRun (QString command)
{
    QProcess process;
    process.start("sh",QStringList() << "-c" << command);
    process.waitForFinished(-1); // will wait forever until finished
}

如果我将其用于类似以下的应用程序,它就可以正常工作

TerminalRun("geany &")

但是,它无法执行以下脚本:

TerminalRun("/path/to/script.sh &")

我没有收到任何错误,但它没有执行脚本。

问题是什么,我该如何解决?

脚本可以直接在终端中执行。 我正在Ubuntu 16.04中使用Qt 4.8。

1 个答案:

答案 0 :(得分:0)

我建议您不要使用“ waitForFinished”,而要使用“ start”,然后使用信号:

connect(&Process, SIGNAL(readyReadStandardError()), this, SLOT(readyReadStandardError()));
connect(&Process, SIGNAL(readyReadStandardOutput()), this, SLOT(readyReadStandardOutput()));
connect(&Process, SIGNAL(finished(int,QProcess::ExitStatus)), this, SLOT(finished(int,QProcess::ExitStatus)));