質問

私はそれが読書の瞬間に空だかどうかを確認するために、オープンos.pipe()から読み取るしようとしています。問題はread()を呼び出すと、実際に私がやっているテストが成功した場合、いずれも存在しないだろうがそこに読むために何かがあるまでそこにブロックするプログラムを引き起こすことがあります。

私は、しかし、私はこの問題に対する別の解決策があるかどうかを知りたいと思った私は、タイムアウトでselect.select()を使用することができます知っています。

役に立ちましたか?

解決

あなたはこれを試してみてください。

import os, fcntl
fcntl.fcntl(thePipe, fcntl.F_SETFL, os.O_NONBLOCK) 

このthePipe.read()では、ノンブロッキングでなければなりません。

からパイプ(7)のmanページ:

  

は、プロセスから読み取ろうとした場合   空のパイプ、次に読み出す(2)ブロックします   データまで利用可能です。 (...)   I / Oを使用することにより可能であるノンブロッキング   fcntl(2)F_SETFL動作と   O_NONBLOCK開いているファイルのステータスを有効にします   フラグます。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top