0

これの逆は何ですか?

fcntl.fcntl(MyStream.fileno(), fcntl.F_SETFL, os.O_NONBLOCK)

私はもう試した

fcntl.fcntl(MyStream.fileno(), fcntl.F_SETFL, os.O_BLOCK)

しかし、結果はAttributeError: 'module' object has no attribute 'O_BLOCK'.

少し背景を説明するために、データをチャンクでpopen'ed プロセスの STDIN にパイプしています。STDOUT で待機しているデータがある場合は、すぐに読み取ってクライアントに戻す必要があります (したがって、ノンブロッキングに切り替えます)。ただし、データのパイプ処理が完了したら、STDOUT で EOF を取得するまでブロックする必要があります。

これを行うためのより良い方法がある場合 (理想的にはクロスプラットフォーム?)、私はすべて耳にします

4

1 に答える 1

1

現在のフラグを取得し、O_NONBLOCK ビットをオフにします。

flag = fcntl.fcntl(MyStream.fileno(), fcntl.F_GETFL)
fcntl.fcntl(MyStream.fileno(), fcntl.F_SETFL, flag & ~os.O_NONBLOCK)
于 2013-10-02T13:23:53.163 に答える