2016-03-31 42 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) 

所有你需要做的就是忽略錯誤時,管道關閉...