关于QProcess遇到过的问题与解决方法

1.看似代码逻辑没问题,但是QProcess并没有执行预设的命令,例如:

bool ExeCmdFun(const QString &cmdTmp)
{
				QProcess process;
				QString cmd = QString("pkill -f ") + cmdTmp;
				process.start(cmd);
				process.waitForFinished(3000);
				......
}

调试的时候把cmd打印出来复制到终端中执行并没有问题例如:
pkill - f ‘gedit’
后来发现代码中后面的参数不能代单引号,代码中因该是 pkill -f gedit 才行

2.用QProcess指针的时候注意。当你启动一个外部程序,而且该外部程序并没有结束的时候,你是不能再用这个QProcess去执行其他命令的。如果该外部程序此时不能结束,你想启动多个外部程序怎么办?那就多创建几个QProcess,可以用列表,向量等数据结构保存其指针以便后续调用。

3.主线程创建的QProcess不能在子线程中调用。

4.程序退出时提示QProcess正在运行中。此时要注意是否要杀死QProcess启动的外部程序,根据自己的业务逻辑自行处理。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值