2016-04-04 6 views
1

Ubuntu üzerinde selectPoll kullanarak bir yuva ve POLLIN, POLLERR ve POLLHUP kaydettim.Python: select.POLLHUP

Anladığım kadarıyla bir POLLIN olayı meydana geldiğinde ve recv() hiçbir veri döndürmediğinde durum eşin bağlantısının kesildiğini gösterir. Testim bunu doğrulayacak gibi görünüyor.

Ama neden POLLHUP alamıyorum? Bunun farklı semantikleri var mı?

+0

[bu sayfa] (http://www.greenend.org.uk/rjk/tech/poll.html) yardımcı olabilir. – Barmar

+0

@Barmar Teşekkürler. Mükemmel referans. – Kenny

cevap

2

Olay değeri bir bitmap.

Eğer POLLIN (değerini: 1) alırsanız okumak için bir şey var sen POLLHUP (değerini: 16) alırsanız,
, giriş bitirilir,
Yani (POLLIN (1) & POLLHUP olsun 16) = 17, girişinizi sona olduğunu ve sizin hala tampon okunan bir şeyleri olmasına meanss olduğunu,

Eğer tampon her şeyi okuduktan sonra, size() anket diyoruz sadece POLLHUP yalnız her alıyorum:
Bu durumda, dosya listesindeki bir dosya tanımlayıcısını tutmak için hiçbir faydası yoktur,
Bu dosya tanımlayıcısını hemen geri almak daha iyidir.