昨天的例子,完成了进程的启动和终止。接下来我们对这个例子稍加修改,完成进程间的对话功能。

示例代码

被调用侧的代码和昨天文章中的完全相同,这里只说明调用侧的代码。

#include <QCoreApplication>#include <QProcess>#include <QTextStream>

int main(int argc, char *argv[]){    QCoreApplication a(argc, argv);    QProcess server;     server.start("G:\\Qt\\21070809 ProcessComm\\ServerProcess\\bin\\debug\\ServerProcess.exe"                  ,QStringList());
     if (!server.waitForStarted())         return -1;
     QTextStream cin(stdin);     QTextStream cout(stdout);

     QByteArray input;     QByteArray response;

     while(input != "bye\n")     {         cin >> input;         input += "\n";         server.write(input);         server.waitForReadyRead();         response = server.readLine();         response.replace("\r\n", "");         cout << response << endl;     }
     if (!server.waitForFinished())         return -1;     return a.exec();}

和昨天代码不同的主要是while循环中的部分。代码内容如下:

  1. 从键盘输入字符串

  2. 在字符串结尾添加字符‘\n’

  3. 向进程写入该字符串

  4. 等待进程反馈信息就绪

  5. 取得反馈信息

  6. 去掉反馈信息中的"\r\n"

  7. 输出反馈信息

如果输入字符串为"bye"则退出循环,否则循环继续。

麻雀虽小,五脏俱全

这个例子,代码虽然不多,但是包含了进程相关的几乎所有的内容:进程启动,进程终止,进程同步,进程通讯。架构已经有了,要完成读者需要的功能,只要添加内容就可以了。

写在文章的最后

既然已经读到这里了,拜托大家再用一分钟时间,将文章转发到各位的朋友圈,微信群中。

本公共号的成长需要您的支持!
更新文章,请扫描下面二维码,关注微信公众号【面向对象思考】

EAUML日拱一卒-多任务编程超入门-(14)麻雀虽小,五脏俱全相关推荐

  1. EAUML日拱一卒 总目录

    用例图 EA&UML日拱一卒 用例图开篇 EA&UML日拱一卒 用例包含关系 EA&UML日拱一卒 用例泛化关系 EA&UML日拱一卒 用例扩展关系 类图 EA& ...

  2. EAUML日拱一卒 时序图入门

    有些文章将TimingDiagram翻译为定时图,但总是差那么点意思.经过权衡,本文将TimingDiagram译为时序图.对于本系列早期文章中将SequenceDiagram翻译成时序图的情况,将来 ...

  3. EAUML日拱一卒 用例扩展关系

    用例扩展关系 下面是ULM2.5.1中对用例扩展关系的解释. 扩展是从扩展用例到被扩展用例的关系,它指定扩展用例中定义的行为如何以及何时可以插入到被扩展用例.扩展发生在被扩展用例中定义的一个或多个特定 ...

  4. EAUML日拱一卒 用例包含关系

    包含关系 包含(Include) 是两个用例之间的有向关系,表示被包含的用例的行为被插入到包含用例的行为中. 包含关系可在两个或多个用例的行为存在共同部分时使用.通常情况下,这个公共部分被提取到一个单 ...

  5. EAUML日拱一卒 用例图开篇

    创建用例图 在Package节点上调出上下文菜单. 选择[Add Diagram...] 选择[UML Behavioral]分类,选择[Use Case]图面类型. 上图中红框部分就是用例图常用的图 ...

  6. EAUML日拱一卒 历史状态

    历史状态 历史状态是一个与组合状态中区域有关的便利的概念,通过这个概念一个区域可以保持自己前一次退出时的状态构成的痕迹.如果愿意,就可以以一种容易的方式在下次状态被激活,或者存在一个返回历史状态的局部 ...

  7. EAUML日拱一卒-活动图:: 对象流

    如果你足够细心,应该可以注意到上一篇文章最后的示例流程中,有一个地方与众不同,就是下图中红框中的部分. 这部分就是今天的内容,对象流. 语义 控制流(control flow)描述了两个活动节点之间执 ...

  8. EAUML日拱一卒 用例泛化关系

    泛化关系 泛化定义类目之间的泛化/特化关系.泛化关系将特殊类目连接到更通用的类目.给定一个类目,其指向一般类目(泛化方向)的传递闭包通常统称为泛化类目,其指向特殊类目(泛化的反方向)的传递闭包通常统称 ...

  9. EAUML日拱一卒--序列图(Sequence Diagram)::交互和交互使用

    画时序图就和写作文一样,经常会遇到一发而不可收的情况,结果就是得到一个巨大的时序图.这种情况下,作者首先会因为完成了一件大工程而感到自豪,可是一旦他把完成的时序图拿给别人看或者是需要维护的时候就开始意 ...

  10. EAUML日拱一卒--序列图(Sequence Diagram)::生命周期

    在实际的程序中,创建对象,删除对象这样的控制对象生命周期的处理可以说比比皆是. 创建对象 下面以图形编辑软件中用户双击鼠标创建新对象为例说明. 处理流程: 用户双击鼠标. Framework生成QMo ...

最新文章

  1. R将因子类型(Factor)转化为字符串类型(Character)
  2. Mac没有winnt格式_8款优秀软件,让你使用mac更舒适
  3. POJ - 3846 Mountain Road 动归
  4. 外边距塌陷之clearance
  5. python3动态加载模块的方法实现
  6. linux中断申请之request_threaded_irq【转】
  7. Android之shape属性简介和使用
  8. 前置仓没活路?盒马mini要做行业终极目标还为时尚早
  9. 12c rman中输入sql命令
  10. 使用MonoDevelop开发跨平台的应用程序
  11. 安卓手机作为中继器-连接Wifi共享该Wifi给PC和手机
  12. UOS桌面操作系统专业版字体
  13. 普乐郡——回乐县(城市记忆7)
  14. 微信企业付款转账到微信
  15. Lq93:复原 IP 地址
  16. 十个优质编程网站,程序员们赶紧看过来!
  17. 为什么程序员适合做自由职业者
  18. 【Linux】-- 基本指令
  19. java工作流 snaker_GitHub - sneakerhead/hutool: A java tools make it easy to code
  20. Linux-bash特性详解

热门文章

  1. Windows 时间同步出错
  2. ligerui combobox ajax,LigerUI中使用ligerComboBox生成多选下拉框
  3. 【DB宝36】使用Docker分分钟搭建漂亮的prometheus+grafana监控
  4. 前段时间《八佰》上映了,让我们看看网友们对这部电影有什么看法
  5. VBox 快照备份虚拟机
  6. YUV420P像素数据编码为JPEG图片
  7. VOB视频格式转换器怎么把vob转换为mp3
  8. OpenStack巴塞罗那峰会,比拼技术更比拼用户体验
  9. BMP图片-文件头部信息
  10. 【iOS】一个方法读取图片中的二维码信息