//注意,
   
    mProcess为共享指针
   
   ,要特别注意,
   
    信号和槽的连接要使用原始指针
   
   (也就是mProcess.get()函数)
  
  std::shared_ptr<QProcess> mProcess;    
mProcess = std::make_shared<QProcess>();
mProcess->setProgram(cmd);
mProcess->setArguments(splitProcessCommand(arguments));
mProcess->setProcessChannelMode(QProcess::MergedChannels);   //设置读取标准输出模式 
mProcess->setProcessEnvironment(env);                        //设置环境变量
mProcess->setWorkingDirectory(workingDir);                   //这种工作目录
ok = connect(mProcess.get(), &QProcess::readyReadStandardError,[this](){ 
        this->log(QString::fromLocal8Bit( mProcess->readAllStandardError()));
ok = connect(mProcess.get(), &QProcess::readyReadStandardOutput,[this](){
        //这样就实现把结果exe的信息给显示在控制台了
        this->log(QString::fromLocal8Bit( mProcess->readAllStandardOutput()));    
mProcess->start();
mProcess->waitForStarted(5000);
//这里可以给它传入一些数据
mProcess->write(readFileToByteArray(mInputFile));
mProcess->closeWriteChannel();
//如果啥时候想终止这个进程,还可以用下面的代码
mProcess->closeReadChannel(QProcess::StandardOutput);
mProcess->closeReadChannel(QProcess::StandardError);
mProcess->closeWriteChannel();
mProcess->terminate();
mProcess->kill();
//这里面就能获得启动的exe的标准输出信息了
void DebugTarget::log(const QString &msg)
    emit debugTargetOutput(msg);
特别注意:
 
如果需要修改process的控制台窗口是否显示,则用下面的函数
 
mProcess->setCreateProcessArgumentsModifier([this](QProcess::CreateProcessArguments * args)
        //下面这两行让后台exe弹出一个窗口         
        args->flags |=  CREATE_NEW_CONSOLE;            
        args->flags &= ~CREATE_NO_WINDOW;
切记:在这个函数里,下面这一行,千万不要用,否则qprocess关闭了标准输出,我们就获取不到输出了(我踩了这个巨坑,一天才找出来)
                args->startupInfo -> dwFlags &= ~STARTF_USESTDHANDLES;
 
当然,如果不通过信号与槽函数机制,自己主动去读取mProcee的标准输出也可以的,那就用
 
mProcee->readAll()
 
mProcee->write()
                    /下面这两行让后台exe弹出一个窗口。如果需要修改process的控制台窗口是否显示,则用下面的函数。在这个函数里,下面这一行,千万不要用,否则qprocess。,我们就获取不到输出了(我。
QProcess类用于启动外部程序并与它们通信。
QProcess允许将进程视为I/O设备。可以像使用qtcsocket访问网络连接一样对进程进行写入和读取。然后可以通过调用write()写入进程的标准输入,并通过调用read()、readLine()和getChar()读取标准输出。因为QProcess继承了QIODevice,所以它还可以用作QXmlReader的输入源,或者用于生成要使用QNetworkAccessManager上载的数据。
当进程退出时,QProces
在QT程序中我们经常需要与其他的程序间进行交互,而与终端进行交互就是一个例子。在不需要获取返回信息的情况下我们可以直接使用"system()"函数执行,但是当需要获取执行的结果或者需要实时地将结果输出到窗口上时,就比较难办了,需要涉及进程管道等等。而QT提供的QProcess类则大大简化了这一过程。
QProcess是QT提供的与外部程序进行交互的一个类,主要使用到以下的函数:
sta...
本例介绍如何使用QProcess启动进程并实时获取启动进程的标准输出后显示。
本例在QT的MainWindow 启动后会每个1秒在控制台打印ping的log,如下图所示
#include "mainwindow.h"
#include <QApplication>
#include <QProcess>
#include <QDebug>
int main(int argc, char *argv[]) {
    QApplication a(argc
				QStringList arguments;    
arguments << "/c" << "netstat -tno|findStr ***.***.***.***(ip地址)";
    QProcess process(this);
    process.start("cmd.exe", arguments);
    process.waitForStart...
一、函数接口
QProcess类提供了三个函数
1、QProcess::execute() 以堵塞方式的执行shell命令,当命令执行完成后,调用进程才会继续执行。命令输出的任何数据都将转发给调用进程输出(因此无法捕获)。
2、QProcess::start() 以异步方式的执行shell命
				Qt5是一款功能强大的C++开发框架,在其中包含了QProcess类,该类可以实现进程的创建和进行管道通信。管道通信是一种进程间的数据传输方式,可以在不同进程间传递数据,实现进程间的通信。
在Qt5中使用QProcess类进行管道通信的方法如下:
1. 创建进程:使用QProcess类的start()函数创建进程,并将进程的输出流和输入流连接起来。
2. 读取和写入数据:使用QProcess类的write()函数向进程中写入数据,使用QProcess类的read()函数从进程中读取数据。
3. 处理数据:使用程序对数据进行处理,并将处理结果输出到输出流中。
4. 关闭进程:使用QProcess类的close()函数关闭进程,结束管道通信。
使用Qt5的QProcess类进行管道通信可以同时执行多个进程,并且可以实现跨平台,支持Windows、Linux等操作系统。同时QProcess类还提供了许多其他的功能,比如可以获取进程的运行状态,可以获取进程错误信息等。因此,在Qt5框架的开发过程中,使用QProcess类进行管道通信可以大大提高开发效率,减少开发难度。
                    Mr-Apple: 
                    
                latex排版原理 常用算法排版伪代码模块 添加注释以及注意事项
                    qq_43133348: