前面文章说了一下 Linux 命名管道的实现,今天看看 Windows 上我们怎么实现。

在 Windows 上的命名管道主要是通过调用 win32 api 的以下方法来实现的:win32pipe.CreateNamedPipe()

win32pipe.ConnectNamedPipe()

win32file.ReadFile()

win32file.WriteFile()

下面看一个例子,比较简单,只是需要注意一下命名管道的命名规则。

server.pyimport win32file

import win32pipe

PIPE_NAME = r'\\.\pipe\test_pipe'

PIPE_BUFFER_SIZE = 65535

while True:

named_pipe = win32pipe.CreateNamedPipe(PIPE_NAME,

win32pipe.PIPE_ACCESS_DUPLEX,

win32pipe.PIPE_TYPE_MESSAGE | win32pipe.PIPE_WAIT | win32pipe.PIPE_READMODE_MESSAGE,

win32pipe.PIPE_UNLIMITED_INSTANCES,

PIPE_BUFFER_SIZE,

PIPE_BUFFER_SIZE, 500, None)

try:

while True:

try:

win32pipe.ConnectNamedPipe(named_pipe, None)

data = win32file.ReadFile(named_pipe, PIPE_BUFFER_SIZE, None)

if data is None or len(data) < 2:

continue

print 'receive msg:', data

except BaseException as e:

print "exception:", e

break

finally:

try:

win32pipe.DisconnectNamedPipe(named_pipe)

except:

pass

client.pyimport win32pipe, win32file

import time

PIPE_NAME = r'\\.\pipe\test_pipe'

file_handle = win32file.CreateFile(PIPE_NAME,

win32file.GENERIC_READ | win32file.GENERIC_WRITE,

win32file.FILE_SHARE_WRITE, None,

win32file.OPEN_EXISTING, 0, None)

try:

for i in range(1, 11):

msg = str(i)

print 'send msg:', msg

win32file.WriteFile(file_handle, msg)

time.sleep(1)

finally:

try:

win32file.CloseHandle(file_handle)

except:

pass

测试首先运行server.py

然后运行client.py

pythonwindows管道_Python进程间通信之命名管道(Windows)相关推荐

  1. python命名管道通讯_Python进程间通信的命名管道详解(Windows)

    本文和大家分享的主要是windows系统下,python进程间通信的命名管道相关内容 ,一起来看看吧,希望对大家学习python有所帮助. 在 Windows 上的命名管道主要是通过调用win32 a ...

  2. 管道实现进程间通信之命名管道

    进程间通信管道篇之命名管道 文章目录 1.1命名管道 1.2命名管道的创建 1.3命名管道和匿名管道的区别 代码演示(用命名管道实现进程间通信) 2.1 通过进程间通信将客户端发送的字符串转化为命令让 ...

  3. python 命名管道_Python:检查命名管道是否有数据

    我的Unix系统上的 Python3进程一直在运行,我希望能够通过偶尔运行的其他进程的命名管道随机发送数据.如果命名管道没有数据,我希望我的进程继续做其他事情,所以我需要检查它是否有没有阻塞的数据. ...

  4. 【Linux系统编程】进程间通信之命名管道

    00. 目录 文章目录 00. 目录 01. 命名管道概述 02. 命名管道创建 03. 命名管道特性 04. 命名管道非阻塞 05. 附录 01. 命名管道概述 无名管道,由于没有名字,只能用于亲缘 ...

  5. Linux进程间通信——使用命名管道

    在前一篇文章-- Linux进程间通信--使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进 ...

  6. 【Linux】进程间通信 - 匿名/命名管道与System V共享内存

    目录 前言 一.管道 0.什么是管道 1).管道的概念 2).管道的本质 3).管道指令: "|" 1.匿名管道 1).如何创建匿名管道 2).如何使用匿名管道进行通信 3).匿名 ...

  7. Linux系统编程——进程间通信:命名管道(FIFO)

    命名管道的概述 无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看<无名管道>).为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道.FIFO 文件. 命名管道( ...

  8. 进程间通信:命名管道FIFO(2)

    一.命名管道 如果我们想在不相关的进程之间交换数据,可以用FIFO文件来完成这项工作,它通常也被称为命名管道.命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和我们已经见 ...

  9. 进程间通信之命名管道

    命名管道(FIFO)是进程间通信的一种方式. API: int mkfifo(const char *pathname, mode_t mode); DEMO: // 写进程 int main(int ...

最新文章

  1. 获国家杰青的北大教授,被985本科生嫌弃本科学校太差!被网友怒怼!
  2. WeChat的catchtap与bindtap的区别:b(ubble)开头的方法会进行冒泡 形象理解:bind会有涟漪 以圈扩散 catch不会只会影响自己
  3. Mac的文件比对工具:Meld、Beyond Compare
  4. C++ 原子操作和内存模型
  5. C# (正则表达试) 检查是否为IP地址
  6. Web前端的学习路线到底是什么,看完秒懂!
  7. 计算机打印不了测试纸,XP打印机打印不了测试页如何解决|打印机打印不了测试页的原因...
  8. 【预测模型-ELAMN预测】基于海鸥算法优化ELMAN神经网络实现数据回归预测
  9. 这款软件有多“硬” ——从国内首款基于云架构的三维CAD平台CrownCAD说起
  10. 2019-01-21-mqtt-mosquitto-启动Unable to load CA certificates
  11. 使用手机自带邮箱客户端无法登录163邮箱,提示:鉴权失败
  12. 关于8583报文详解
  13. 6.shell之正则表达式
  14. Go语言中的条件变量Cond
  15. 第10章 51PC实物制作
  16. 数据库 分库分表----全貌解析----策略,方法,中间件,途中问题,数据迁移方法
  17. (xy) + ( (x^y)>>1 )
  18. ST电机库v5.4.4源代码分析(10): MCWB应用中的一个小技巧
  19. selenium+Java环境搭建
  20. python提取abaqus中ODB文件的场信息

热门文章

  1. 从招聘要求,明确一名数据分析师需要掌握的技能!
  2. poi解析Excel文件版本问题
  3. 一文读懂数据中台架构体系(收藏)
  4. Threejs之粒子动画/点击交互
  5. MS9332 HDMI1分二方案分配器方案
  6. 海康威视录像机的远程访问问题
  7. 纯css实现扁平化360卫士logo demo
  8. Apowersoft录屏王
  9. 【webrtc】 socket 运行机制以及 stun 收发过程
  10. abstract(抽象)修饰符,可以修饰类和方法