目录
4.解决QProcess使用setProcessEnvironment环境变量不能生效的问题
五.关于QProcess::startDetached方式启动进程,父进程退出后,子进程依然占用父进程资源的问题
一.启动外部程序
进程就是一个程序的执行实例,也就是正在运行的程序。对操作系统来说,进程就是一个担当分配系统资源CPU时间、内存的实体。
在Qt 中,我们使用QProcess来表示一个进程。这个类可以允许我们的应用程序启动一个新的外部程序,并且与这个程序进行通讯。当外部程序开始启动时,QProcess的状态为Starting;外部程序已经启动时,QProcess的状态为Running,并发送started()信号;当外部层序退出了,QProcess的状态为NotRunning(初始状态),并发送finished()信号。
QProcess使用的一般步骤如如下所示:
QProcess p;
p.start(command, args); //command是要执行的命令,args是参数
p.waitForFinished(); //等待完成
qDebug()<<QString::fromLocal8Bit(p.readAllStandardError());
下面是个简单的例子,通过命令行将Windows D盘Image文件夹中的.jpg后缀改为.png
该指令为:ren *.jpg *.png
QString program = "cmd.exe";// 如果cmd.exe不在环境变量中,要用绝对路径C:/Windows/System32/cmd.exe
QStringList arguments;
arguments <<"/c" << "ren" << "D:\\Image\\*.jpg" << "*.png";
QProce
本文详细介绍了Qt中的QProcess类,用于启动和管理外部进程。内容涵盖启动外部程序、通过stdout获取返回数据、错误处理及QProcess的使用注意事项。讲解了start、execute和startDetached的区别,以及如何通过管道进行进程间通信。同时,文章还提供了解决QProcess设置环境变量无效问题的方案。
订阅专栏 解锁全文
7467

被折叠的 条评论
为什么被折叠?



