QT笔记:Process库
QT笔记:Process库
说明
QT 带有Process库用以在原有的进程中开一个新的线程或者其他进程来执行其他程序,这个库调用非常简单,这里给出一个创建一个分离进程来执行bat脚本的示例
示例
#include <QCoreApplication>
#include <QProcess>
#include <QThread>
int main(int argc, char *argv[])
{
QCoreApplication a(argc, argv);
QStringList arg=a.arguments();
QString bat_file(".\\..\\..\\..\\tools\\after_build\\after_build.bat");
arg.removeAt(0);
qDebug()<<arg;
arg[0].replace("/","\\");
arg[1].replace("/","\\");
QProcess process;
process.startDetached("cmd.exe",(QStringList()<<"/c")+(QStringList()<<bat_file)+arg);
//process.start("cmd.exe",(QStringList()<<"/c")+(QStringList()<<bat_file)+arg);
//process.waitForFinished(-1);
//qDebug()<<process.readAll();
//a.exit(0);
QThread::msleep(1000);
//return a.exec();
return 0;
}
问题记录
- 开启进程可以用分离形式和合并形式,这两种方式资料有很多,区别在于分离形式开的进程无法通过原来的信号槽机制与主进程进行交互
- 程序最后的return a.exec();是进入信号槽交互循环。只有在进入这个循环后调用exit终止主程序主程序才会终止。
- 对于命令行程序,由于不带退出按键的UI,如果想分离开启子进程后直接关闭主进程的话就不要进入信号槽交互循环,直接return即可。或者创建一个信号槽,进入循环后定时启动exit信号来退出a
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南
· 被坑几百块钱后,我竟然真的恢复了删除的微信聊天记录!
· 没有Manus邀请码?试试免邀请码的MGX或者开源的OpenManus吧