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启动的外部程序,根据自己的业务逻辑自行处理。