如何使用QProcess启动Shell脚本?

时间:2012-01-31 20:53:34

标签: c++ qt bash shell qprocess

如何使用QProcess启动Shell脚本? Shell脚本中有八个不同的命令,一些带有其他没有的参数。

我尝试使用(使用Ubuntu 11.10)启动Shell脚本:

QProcess *Prozess = new QProcess();
Prozess->setWorkingDirectory(MainDirectory);
Prozess->start("/bin/sh", QStringList() << "Shell.sh");

但这不起作用,这意味着没有任何反应。如何使它工作?

3 个答案:

答案 0 :(得分:4)

代码很好。问题出在运行时。

您的程序由于某种原因无法运行/bin/sh(测试是否可以运行gedit?),或者MainDirectory变量的目录路径错误(调试它),或者Shell.sh在该目录中不存在(大写错误?“。/ Shell.sh”怎么办?),或者你没有足够的权限来运行或修改目标目录/文件(它们是否属于吗?)。

答案 1 :(得分:1)

您已启动的流程正在后台运行。如果要查看正在运行的脚本的任何显式输出,则必须连接到void readyReadStandardOutput()或/和void readyReadStandardError()并明确读取该进程。例如:

void onReadyRead() {

   QByteArray processOutput = Prozess->readAllStandardOutput();
}

答案 2 :(得分:0)

这应该有效:

QProcess::ProcessError Error = myProcess->readAllStandardError();
return Error;