进程间通讯之 命名管道

命名管道其实用的还是API函数,我估计是底层应该是操作系统 分配了一块单独的内存空间,两个程序或是多个程序都可以对这块内存进行读写。

这些所谓的管道API函数,就是我们编程人员操作这些内存空间的方法。

×××××××××××××××××××××××××××××××××××××

用到的API函数

管道服务器首次调用CreateNamedPipe()函数时,使用nMaxInstance参数指定了能同时存在的管道实例的最大数目。服务器可以重复调用CreateNamedPipe()函数去创建管道新的实例,直至达到设定的最大实例数。下面给出CreateNamedPipe()的函数原型:

HANDLE CreateNamedPipe(             
LPCTSTR lpName, // 指向管道名称的指针              
DWORD dwOpenMode, // 管道打开模式              
DWORD dwPipeMode, // 管道模式              
DWORD nMaxInstances, // 最大实例数              
DWORD nOutBufferSize, // 输出缓存大小              
DWORD nInBufferSize, // 输入缓存大小              
DWORD nDefaultTimeOut, // 超时设置              
LPSECURITY_ATTRIBUTES lpSecurityAttributes // 安全属性指针              
);

 目的已经实现了,详细见孙鑫的书  VC++ 深入浅出

第一步:创建一个解决方案
第二步:添加两个对话框程序
第三步:添加 List Edit Button控件 ,修改ID 和Caption,调整各自的位置。
第四步:完成了A 的代码
第五步:完成了B的代码
第六步:调整了A的创建管道的代码
第七步:编译 调试 运行 结果OK

××××××××××××××××××××××××××××××××
后记:上述功能只是测试管道功能的可行性,为了实现稳定可靠的通讯。
需要做出以下改进:
1)创建一个工作线程,不断监听是否有数据管道里面过来,如果有的话立即处理,不然时间长了缓存就满了
2)

××××××××××××××××

源代码如下:链接: http://pan.baidu.com/s/1gdrpzeN 密码: 7in5

原文地址:https://www.cnblogs.com/wenluderen/p/4774974.html