MFC匿名管道原理详解、函数总结、调用实例(用MFC的匿名管道读取CMD输出内容)(C++语言)

博客介绍了如何使用MFC的匿名管道技术来读取CMD进程的输出内容,详细解析了CreatePipe(), CreateProcess(), ReadFile()三个核心函数的参数和用法,并提供了一个封装函数的示例及调用实例,适用于Windows环境下进程间通信。" 124957197,1510383,C语言试题:利用条件运算符表示成绩等级,"['C语言试题', 'C语言编程', '计算机二级', '编程基础', '逻辑运算']
摘要由CSDN通过智能技术生成

本博客主要总结MFC中匿名管道的原理和具体调用实例,以及调用匿名管道三个核心函数各个参数用法详解,具体的如下所述。

博主在做项目时,遇到一个问题。用程序调用一个进程,然后读取进程输出信息。但是,博主用Qt的QProcess无法读取标准输出,所以只能考虑管道技术。

由于博主的开发环境是Windows10 64位,Qt的QProcess并没有找到类似的功能(可能博主对Qt研究不够深入,希望知道的大神告知一下),所以打算用MFC的匿名管道。

经过资料的查找和验证,博主发现,MFC的匿名管道技术可以实现读取CMD进程输出的内容,所以特定将MFC匿名管道用法记录下来,学习和总结。

 

匿名管道概念解释:

匿名管道主要用于进程间通信,进程的关系为父进程和子进程。具体原理如下图所示:

父进程和子进程都有读端口和写端口。通信方式可以从父进程写数据,子进程读数据。或者子进程写数据,父进程读数据。

其中,本文下面的例子是用图二的从子进程写数据,从父进程读取数据。即子进程通过cmd命令执行程序,然后程序输入的内容通过写句柄hWritePipe,写入内核(直接调用CrateProcess()函数,设置对应参数就可以写数据到内核。而不用调用WriteFile()函数)。父进程根据子进程管道的读句柄hReadPipe,调用ReadFile()函数读取内核数据。

 

一、MFC创建管道主要步骤

用MFC编写匿名管道的核心函数有三个,分别是CreatePipe(),CreateProcess(),ReadFile()三个核心函数。其中,函数CreatePipe()主要功能是创建一个管道通信,函数CreateProcess()主要功能是创建一个进程,函数ReadFile()读取进程输出的内容。下面是对创建管道通信步骤的总结:

 

1.1先创建调用函数CreatePipe()创建一个管道通信。关键代码为:

CreatePipe(&hReadPipe, &hWritePipe, &safety, 0);
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

三公子Tjq

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值