pythonwindows管道_Python进程间通信之命名管道(Windows)
前面文章说了一下 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)相关推荐
- python命名管道通讯_Python进程间通信的命名管道详解(Windows)
本文和大家分享的主要是windows系统下,python进程间通信的命名管道相关内容 ,一起来看看吧,希望对大家学习python有所帮助. 在 Windows 上的命名管道主要是通过调用win32 a ...
- 管道实现进程间通信之命名管道
进程间通信管道篇之命名管道 文章目录 1.1命名管道 1.2命名管道的创建 1.3命名管道和匿名管道的区别 代码演示(用命名管道实现进程间通信) 2.1 通过进程间通信将客户端发送的字符串转化为命令让 ...
- python 命名管道_Python:检查命名管道是否有数据
我的Unix系统上的 Python3进程一直在运行,我希望能够通过偶尔运行的其他进程的命名管道随机发送数据.如果命名管道没有数据,我希望我的进程继续做其他事情,所以我需要检查它是否有没有阻塞的数据. ...
- 【Linux系统编程】进程间通信之命名管道
00. 目录 文章目录 00. 目录 01. 命名管道概述 02. 命名管道创建 03. 命名管道特性 04. 命名管道非阻塞 05. 附录 01. 命名管道概述 无名管道,由于没有名字,只能用于亲缘 ...
- Linux进程间通信——使用命名管道
在前一篇文章-- Linux进程间通信--使用匿名管道中,我们看到了如何使用匿名管道来在进程之间传递数据,同时也看到了这个方式的一个缺陷,就是这些进程都由一个共同的祖先进程启动,这给我们在不相关的的进 ...
- 【Linux】进程间通信 - 匿名/命名管道与System V共享内存
目录 前言 一.管道 0.什么是管道 1).管道的概念 2).管道的本质 3).管道指令: "|" 1.匿名管道 1).如何创建匿名管道 2).如何使用匿名管道进行通信 3).匿名 ...
- Linux系统编程——进程间通信:命名管道(FIFO)
命名管道的概述 无名管道,由于没有名字,只能用于亲缘关系的进程间通信(更多详情,请看<无名管道>).为了克服这个缺点,提出了命名管道(FIFO),也叫有名管道.FIFO 文件. 命名管道( ...
- 进程间通信:命名管道FIFO(2)
一.命名管道 如果我们想在不相关的进程之间交换数据,可以用FIFO文件来完成这项工作,它通常也被称为命名管道.命名管道是一种特殊类型的文件,它在文件系统中以文件名的形式存在,但是它的行为却和我们已经见 ...
- 进程间通信之命名管道
命名管道(FIFO)是进程间通信的一种方式. API: int mkfifo(const char *pathname, mode_t mode); DEMO: // 写进程 int main(int ...
最新文章
- 获国家杰青的北大教授,被985本科生嫌弃本科学校太差!被网友怒怼!
- WeChat的catchtap与bindtap的区别:b(ubble)开头的方法会进行冒泡 形象理解:bind会有涟漪 以圈扩散 catch不会只会影响自己
- Mac的文件比对工具:Meld、Beyond Compare
- C++ 原子操作和内存模型
- C# (正则表达试) 检查是否为IP地址
- Web前端的学习路线到底是什么,看完秒懂!
- 计算机打印不了测试纸,XP打印机打印不了测试页如何解决|打印机打印不了测试页的原因...
- 【预测模型-ELAMN预测】基于海鸥算法优化ELMAN神经网络实现数据回归预测
- 这款软件有多“硬” ——从国内首款基于云架构的三维CAD平台CrownCAD说起
- 2019-01-21-mqtt-mosquitto-启动Unable to load CA certificates
- 使用手机自带邮箱客户端无法登录163邮箱,提示:鉴权失败
- 关于8583报文详解
- 6.shell之正则表达式
- Go语言中的条件变量Cond
- 第10章 51PC实物制作
- 数据库 分库分表----全貌解析----策略,方法,中间件,途中问题,数据迁移方法
- (xy) + ( (x^y)>>1 )
- ST电机库v5.4.4源代码分析(10): MCWB应用中的一个小技巧
- selenium+Java环境搭建
- python提取abaqus中ODB文件的场信息