6

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

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

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

但这不起作用,这意味着什么也没有发生。如何让它发挥作用?

4

4 回答 4

5

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

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

于 2012-02-01T06:40:55.693 回答
2

您启动的进程正在后台运行。如果您想查看正在运行的脚本的任何显式输出,您必须连接到void readyReadStandardOutput()或/并void readyReadStandardError()显式地从进程中读取。例如:

void onReadyRead() {

   QByteArray processOutput = Prozess->readAllStandardOutput();
}
于 2012-01-31T22:17:46.863 回答
0

这应该有效:

QProcess::ProcessError Error = myProcess->readAllStandardError();
return Error;
于 2013-05-17T06:21:14.057 回答
0
QProcess ().execute ("/bin/sh " + MainDirectory + "/Shell.sh");

将完成这项工作。

于 2021-10-16T15:49:12.790 回答