void Widget::startSh(QString str)
{
QString program = "./hello.sh";
QStringList arguments;
arguments << str;
QProcess *myProcess = new QProcess();
myProcess->start(program, arguments); // 或者用startDetached()
}
QProcess::start的第一个参数是外部程序名,第二个参数是传给程序的参数列表。
因此上述代码会调用hello.sh脚本,并传给脚本 str 参数。
但是如果没有执行hello.sh的权限,比如把脚本安装到了/usr/bin下,此时需要 sh /usr/bin/hello.sh str 才能执行脚本。
此时需要注意,sh才是真正的program 名,代码应改为
void Widget::startSh(QString str)
{
QString program = "./hello.sh";
QStringList arguments;
arguments << program << str;
QProcess *myProcess = new QProcess();
myProcess->start("sh", arguments); // 或者用startDetached()
}