小编Spo*_*are的帖子

试图在 Windows 10 中打开一个现有的命名管道 - errno 22,无效的参数,但为什么呢?

我正在编写/试验需要连接到 Windows 10 中现有命名管道的 python 脚本。我使用的是 Python 3.8。

命名管道

具体来说,我试图连接到一个名为的管道SendPipe1并向其写入 14 个 ascii 编码的字符。

管道是由其他一些软件(驱动程序?)为连接到我的 PC 的设备创建的。我正在连接它以尝试以与制造商提供的软件相同的方式与设备交互。制造商提供的软件连接到同一管道并向其发送编码消息,命令设备执行某些操作。这就是我想做的。

通过运行 PipeList 实用程序,我知道管道已经存在:

PipeList v1.02 - Lists open named pipes
Copyright (C) 2005-2016 Mark Russinovich
Sysinternals - www.sysinternals.com

Pipe Name                                    Instances       Max Instances
---------                                    ---------       -------------
[...]
chrome.blah.foo                                   1                1
SendPipe1                                         1               -1
ReceivePipe1                                      1               -1
chrome.blah.bar                                   1                1
[...]
Run Code Online (Sandbox Code Playgroud)

编码

这是我现在所拥有的:

ACTIVE_DISP_ID = 1
msg = f'6;16;100;{ACTIVE_DISP_ID};1\r\n'
pipe_path = f'\\\\.\\PIPE\\SendPipe{ACTIVE_DISP_ID}'

try:
    f = open(pipe_path, 'wb+', buffering=0)
    f.write(msg.encode(encoding='ascii'))
except OSError as …
Run Code Online (Sandbox Code Playgroud)

python ipc pipe named-pipes python-3.x

5
推荐指数
1
解决办法
261
查看次数

标签 统计

ipc ×1

named-pipes ×1

pipe ×1

python ×1

python-3.x ×1