如何从Python创建非阻塞命名管道?

2024-09-30 01:32:56 发布

您现在位置:Python中文网/ 问答频道 /正文

在windows7下,我有一个python3应用程序,它通过命名管道与使用visualstudio用C编写的可执行文件进行通信。在Python中,我使用win32pipe包。在

我注意到,在可执行文件中,从管道读取数据是阻塞的:

readResult = ReadFile(plafParams->hrpipe_p, &byte, 1, &dwBytesTransferred, &overlap);

打开管道时:

^{pr2}$

overlap是一个静态全局变量,如上所述初始化。在

OVERLAPPED overlap;

在Python中,管道的打开方式如下:

self._rpipe = win32pipe.CreateNamedPipe(r'\\.\pipe\wskr_%s'%(self._comport,), win32pipe.PIPE_ACCESS_DUPLEX | win32file.FILE_FLAG_OVERLAPPED , 0, 1, 256, 256, 0, None)

在等待连接到管道之后,我像

win32file.WriteFile(self._rpipe, bytes)

它可以工作,而且我可以在可执行文件中获得发送的字节,没有问题,但是我希望有一个非阻塞读取。因此,我用win32file.FILE_FLAG_OVERLAPPED打开了管道,但这没有帮助。。。在

如有任何提示,我将不胜感激;-)


Tags: self应用程序可执行文件管道命名python3fileflag

热门问题