通过pipe进程间通信

通过pipe进程间通信

ID:42657704

大小:41.10 KB

页数:13页

时间:2019-09-19

通过pipe进程间通信_第1页
通过pipe进程间通信_第2页
通过pipe进程间通信_第3页
通过pipe进程间通信_第4页
通过pipe进程间通信_第5页
资源描述:

《通过pipe进程间通信》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库

1、基于visualc++之windows核心编程代码分析(17)通过pipe进程间通信分类:VC++编程技术VisualC++2010编程技术VisualStudio2012Windows8信息安全2011-12-1712:17120人阅读评论(0)收藏举报管道是一种用于在进程间共享数据的机制,其实质是一段共享内存。Windows系统为这段共享的内存设计采用数据流I/0的方式来访问。由一个进程读、另一个进程写,类似于一个管道两端,因此这种进程间的通信方式称作“管道”。   管道分为匿名管道和命名管道。  

2、 匿名管道只能在父子进程间进行通信,不能在网络间通信,而且数据传输是单向的,只能一端写,另一端读。   命令管道可以在任意进程间通信,通信是双向的,任意一端都可读可写,但是在同一时间只能有一端读、一端写。 管道客户端代码实现如下viewplaincopytoclipboardprint?1./* 头文件 */  2.#include    3.#include   4.#include   5.#include   6./* 常

3、量 */  7.#define BUFSIZE 512  8./* ************************************ 9.* int main(VOID)  10.* 功能    pipe 通信服务端主函数 11.**************************************/  12.int main(int argc, TCHAR *argv[])   13.{   14.    HANDLE hPipe;   15.    LPTSTR lpvMessage=

4、TEXT("Default message from client");   16.    TCHAR chBuf[BUFSIZE];   17.    BOOL fSuccess;   18.    DWORD cbRead, cbWritten, dwMode;   19.    LPTSTR lpszPipename = TEXT("\\.\pipe\samplenamedpipe");   1.  2.    if( argc > 1 )   // 如果输入了参数,则使用输入的参数  3

5、.        lpvMessage = argv[1];  4.    while (1)   5.    {   6.        // 打开一个命名pipe  7.        hPipe = CreateFile(   8.            lpszPipename,   // pipe 名   9.            GENERIC_READ 

6、   GENERIC_WRITE,     //  可读可写  10.            0,              // 不

7、共享  11.            NULL,           // 默认安全属性  12.            OPEN_EXISTING,  // 已经存在(由服务端创建)  13.            0,              // 默认属性  14.            NULL);      15.        if (hPipe != INVALID_HANDLE_VALUE)   16.            break;   17.  18.        // 如果

8、不是 ERROR_PIPE_BUSY 错误,直接退出    19.        if (GetLastError() != ERROR_PIPE_BUSY)   20.        {  21.            printf("Could not open pipe");   22.            return 0;  23.        }  24.  25.        // 如果所有pipe实例都处于繁忙状态,等待2秒。  26.        if (!WaitNamedP

9、ipe(lpszPipename, 2000))   27.        {   28.            printf("Could not open pipe");   29.            return 0;  30.        }   31.    }   32.  33.    // pipe已经连接,设置为消息读状态   34.    dwMode = PIPE_READMODE_MESSAGE;   35. 

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。