window c++ 两个进程之间如何通过命名管道传递消息
时间: 2024-01-27 07:03:36 浏览: 84
在 Windows 系统中,可以使用命名管道(Named Pipe)实现进程间通信。下面是一个简单的示例:
1. 创建命名管道:
```c++
HANDLE hPipe;
hPipe = CreateNamedPipe(TEXT("\\\\.\\pipe\\mypipe"), PIPE_ACCESS_DUPLEX, PIPE_TYPE_BYTE | PIPE_READMODE_BYTE | PIPE_WAIT, PIPE_UNLIMITED_INSTANCES, 0, 0, NMPWAIT_USE_DEFAULT_WAIT, NULL);
```
其中,第一个参数是命名管道的名称,第二个参数指定管道的访问权限,第三个参数指定管道的传输模式,第四个参数指定管道的最大实例数,第五个参数和第六个参数分别指定输入缓冲区和输出缓冲区的大小,第七个参数指定等待客户端连接的超时时间,第八个参数通常为 NULL。
2. 等待客户端连接:
```c++
ConnectNamedPipe(hPipe, NULL);
```
3. 从管道中读取数据:
```c++
BYTE buffer[1024];
DWORD dwRead;
ReadFile(hPipe, buffer, sizeof(buffer), &dwRead, NULL);
```
4. 向管道中写入数据:
```c++
BYTE buffer[1024];
DWORD dwWritten;
WriteFile(hPipe, buffer, sizeof(buffer), &dwWritten, NULL);
```
5. 关闭管道:
```c++
CloseHandle(hPipe);
```
需要注意的是,以上代码只是一个简单的示例,实际应用中需要进行错误处理、超时处理等。
阅读全文