EA&UML日拱一卒-多任务编程超入门-(14)麻雀虽小,五脏俱全

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


示例代码


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


#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"则退出循环,否则循环继续。


麻雀虽小,五脏俱全


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


写在文章的最后


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


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


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值