Qt QProcess startDetached 无法结束进程(bash 会话)
Qt QProcess startDetached can't end process (bash session)
我试图从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会话。
希望有人知道如何解决或变通!
startDetached()
是一个静态方法;您启动了一个新进程,但它不是由process
对象表示的。
当你等待process
完成时,它将永远等待,因为process
从未启动过。
试试类似的东西:
process.start("/bin/bash", QStringList() << "-c" << s);
bool finished = process.waitForFinished(-1);
您可能希望在start()
之前重定向I/O。
相关文章:
- 为多个会话保留XPtr
- 是否可以用"iostream"包装现有的TCP/OOpenSSL会话
- 将bash参数传递给c++
- 如何修复 Onnx运行时会话>运行问题?
- 为什么 KMS drmModeSetCrtc() 在 X11 会话中运行时会失败并被拒绝权限?
- 如何在带有 gdb GUI 前端的 ARM gdbserver 的 PC 上执行远程 gdb 会话?
- bash脚本在使用popen()时不返回代码以调用C ++程序
- 宽藤会话更新无休止循环
- 终端如何在 shell 提示符下以编程方式阻止退格,以便您无法在其上退格,例如 $ 表示 bash 或 C:\blah\>
- Bash 自动完成一个选项,而不运行应用程序
- 在 Windows 上运行带有 C++ 的 bash 脚本
- 使用 bash 脚本和测试处理进行代码编辑
- 主机箱/bash 未执行 docker 映像
- Windows桌面程序保存您的计算机会话 - 基于程序崩溃时的恢复会话
- 如何在 bash 中使用管道在 c++ 中使用 getenv() 访问文件?
- 在Win7上,在默认端点上轮询音频会话有时会崩溃
- 终端(bash)如何知道引发了什么异常
- -bash:/a.out:无法执行二进制文件:Exec格式错误
- 有没有办法在 C 或 C++ 中嵌入 Sh/Bash 会话?
- Qt QProcess startDetached 无法结束进程(bash 会话)