如何使用QProcess启动Shell脚本

How to start a Shell Script with QProcess?

本文关键字:Shell 脚本 启动 QProcess 何使用      更新时间:2023-10-16

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

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

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

但这不起作用,这意味着什么都没发生。如何使其发挥作用?

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

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

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

void onReadyRead() {
   QByteArray processOutput = Prozess->readAllStandardOutput();
}

这应该有效:

QProcess::ProcessError Error = myProcess->readAllStandardError();
return Error;
QProcess ().execute ("/bin/sh " + MainDirectory + "/Shell.sh");

将完成这项工作。