2016-03-31 19 views
1

我需要同时侦听传入消息和命名管道(debian linux)的带有xmpp连接的套接字。如何在Python中同时侦听命名管道和套接字

主要麻烦,在我看来,是一切后

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 0127: 正如你所看到的,我不是一个伟大的Python专家,所以如果你只能告诉我,在哪里挖掘解决方案,那将是绰绰有余。 Buuut ...现成的解决方案也很好。 =)

回答

0

OK,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) 

所有你需要做的就是忽略错误时,管道关闭...