gpt4 book ai didi

python - 如何在python中同时监听命名管道和套接字

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:25:10 24 4
gpt4 key购买 nike

我需要同时通过 xmpp 连接监听传入消息和命名管道 (debian linux) 的套接字。

在我看来,主要的问题是一切都在之后卡住

os.open('/var/mypipes/outgoing', os.O_RDONLY)

等待管道,所以,类似的变体

list = {socket.here:'xmpp',os.open('/var/mypipes/outgoing', os.O_RDONLY):'mypipe'}
while online:
(i, o, e) = select.select(list.keys(),[],[],1)
for key in i:
do smth

不会工作,即使我将那个东西放入 select.select 中也是如此:

while online:
(i, o, e) = select.select([socket.here,os.open('/var/mypipes/outgoing', os.O_RDONLY)],[],[],1)
for key in i:
do smth

它也不起作用。如您所见,我不是 Python 的专家,所以如果您能告诉我在哪里寻找解决方案,那就足够了。 Buuut ...现成的解决方案也不错。 =)

最佳答案

好的,O_NONBLOCK 解决了阻塞的问题,之后选择工作,下面的代码在我的系统上运行:

import os
import select
l = {os.open('/tmp/pipe', os.O_RDONLY|os.O_NONBLOCK):'mypipe'}

while True:
(i, o, e) = select.select(l.keys(),[],[],1)
for key in i:
print os.read(key, 1)

您所要做的就是在管道关闭时忽略错误...

关于python - 如何在python中同时监听命名管道和套接字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36344134/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com