Qt如何启动和终止进程

进程通信的范围非常大,也有很多的方法。其中的有些方法甚至可以单独成书。本系列使用几个小程序进行尽量简单的说明。今天首先说明启动和终止另外一个进程。

被调用端代码

int main(int, char*[])
{
    string msg;
    while(msg != "BYE")
    {
        cin >> msg;
        transform(msg.begin(), msg.end(),
                  msg.begin(), ::toupper);
        cout << msg << endl;
    }
}

代码很简单,从标准输入读入字符串,转换为大写,然后输出。

如果输入的字符串转为大写以后是“BYE”则程序退出。

调用端代码

int main(int /*argc*/, char */*argv*/[])
{
     QProcess server;
     server.start("G:\\Qt\\21070809 ProcessComm\\ServerProcess\\bin\\debug\\ServerProcess.exe"
                  ,QStringList());

     if (!server.waitForStarted())
         return false;

     server.write("bye");
     server.closeWriteChannel();

     if (!server.waitForFinished())
         return false;

     QByteArray result = server.readAll();
     cout << result.constData();
     return 0;
}

看不全的部分是文件名,不用太在意。

这部分代码利用了QT的QProcess类来操作进程。大致分为以下几步:

  1. 指定文件名和参数调用start方法来启动一个进程
  2. 调用waitForStarted方法来等待进程启动成功
  3. 向进程写入“bye”字符串,指示线程退出
  4. 关闭写通道
  5. 调用waitForFinished方法等待线程退出
  6. 取得进程返回的数据并输出,这里我们可以得到一个“BYE”

这个例子程序包含了进程操作通信的基本要素,是今后一段时间实例的基础。

本文福利,费领取Qt开发学习资料包、技术视频,内容包括(C++语言基础,C++设计模式,Qt编程入门,QT信号与槽机制,QT界面开发-图像绘制,QT网络,QT数据库编程,QT项目实战,QSS,OpenCV,Quick模块,面试题等等)↓↓↓↓↓↓见下面↓↓文章底部点击费领取↓↓

猜你喜欢

转载自blog.csdn.net/m0_60259116/article/details/130171274