【发布时间】:2016-07-21 16:43:20
【问题描述】:
我正在尝试从 Qt GUI 调用 shell 脚本,但在运行脚本后,bash 会话在应该完成时保持打开状态。
拥有此代码:
QString s = "./script.sh " + argument;
qint64 *pid = NULL;
QProcess process;
process.startDetached("/bin/bash", QStringList() << "-c" << s, NULL, pid);
bool finished = process.waitForFinished(-1);
std::cout << "ended";
所以在运行脚本后,它期望输入一个命令,我可以输入任何命令,它会执行它。问题是在我输入命令之前它永远不会完成。
我也尝试像这样修改s 变量:
QString s = "./script.sh " + argument + " ;exit";
希望它会结束 bash 会话,但没有任何反应。
如果我不使用startDetached 函数,而是使用start,它会在没有;exit 命令的情况下关闭bash 会话。
希望有人知道如何解决它或解决方法!
【问题讨论】:
-
脚本和参数是什么?或者,您可以使用标准命令(例如
bash -c "echo done"bash -c "echo done")重现此问题吗? -
一个标准命令将重现我想要的行为。该脚本有 2 个命令,然后是一个
exit 0来结束脚本。命令执行正确。