2016-03-31 9 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に入れます:

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 ...既製のソリューションもいいです。 =)

答えて

0

OK、O_NONBLOCKが、ブロッキングの問題を解決して、選択した作品のafterwars、次のコードは、私のシステム上で実行されます:

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) 

あなたがする必要がありますすべての時にエラーを無視することですパイプは閉じています...

関連する問題