Python进程间通信之命名管道(Windows)
来源:互联网 发布:淘宝联盟买东西省钱 编辑:程序博客网 时间:2024/05/19 09:14
前面文章说了一下 Linux 命名管道的实现,今天看看 Windows 上我们怎么实现。
在 Windows 上的命名管道主要是通过调用 win32 api 的以下方法来实现的:
- win32pipe.CreateNamedPipe()
- win32pipe.ConnectNamedPipe()
- win32file.ReadFile()
- win32file.WriteFile()
下面看一个例子,比较简单,只是需要注意一下命名管道的命名规则。
server.py
import win32fileimport win32pipePIPE_NAME = r'\\.\pipe\test_pipe'PIPE_BUFFER_SIZE = 65535while 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.py
import win32pipe, win32fileimport timePIPE_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
阅读全文
0 0
- Python进程间通信之命名管道(Windows)
- Windows进程间通信之命名管道
- Windows进程间通信之命名管道
- Python进程间通信之命名管道
- Windows进程间通信—命名管道
- Windows进程间的通信-命名管道
- 进程间通信之命名管道
- 进程间通信之命名管道FIFO
- 进程间通信之命名管道
- Linux进程间通信之命名管道
- 进程间通信之命名管道
- 进程间通信之命名管道
- 进程间通信之--命名管道
- 进程间通信之命名管道
- Windows系统编程之进程间通信-异步管道和命名管道
- 进程间通信之匿名管道和命名管道
- Linux--进程间通信之匿名管道及命名管道
- 进程间通信---命名管道
- New Year and Old Property CodeForces
- bzoj 1821: [JSOI2010]Group 部落划分 Group
- 解读Recyclerview基类抽取与应用
- 在不申请任何权限的情况下在 Android 应用中弹出悬浮窗
- Yii中的Helper使用
- Python进程间通信之命名管道(Windows)
- 算法题练习系列之(三十五): NowCoder数列
- Android使用MediaStore.ACTION_IMAGE_CAPTURE,拍照到指定目录
- goole浏览器 模拟app
- Openfire 的安装和配置
- PHP程序员面试中经常被提问的问题
- 【MYSQL】MySQL5.6.37二进制安装
- Leakdiag 和LDGrapher的使用
- iOS11 & iPhone X 适配指南