我已经编写了此功能来运行脚本或应用程序:
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。
答案 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)));