デッド ピアの処理に EPOLLHUP を使用したサンプル コードを教えてください。ユーザーの切断を検出する信号であることは知っていますが、これをコードでどのように使用できるかわかりません..よろしくお願いします..
21759 次
1 に答える
43
EPOLLRDHUP
ピアのシャットダウンを検出するために使用しますEPOLLHUP
が、(ソケットの予期しないクローズ、つまり通常は内部エラーを通知します)ではありません。
それを使用することは本当に簡単です、あなたが与えている他のフラグと一緒にフラグを「または」するだけですepoll_ctl
。したがって、たとえば、EPOLLIN
書き込みの代わりにEPOLLIN|EPOLLRDHUP
。
の後epoll_wait
に、if(my_event.events & EPOLLRDHUP)
反対側が接続を閉じた場合に実行したいことを実行します(おそらくソケットを閉じたいと思うでしょう)。
ソケットからの読み取り時に「ゼロバイト読み取り」の結果が得られるということは、もう一方の端が接続をシャットダウンしたことも意味することに注意してください。したがって、厄介な驚き(から目覚めた後FIN
に到着する可能性があります)を避けるために、常にそれもチェックする必要があります。ただし、電話をかける前に、ETモードの場合は、別の通知は届きません)。EPOLLIN
read
于 2011-06-22T10:09:49.980 に答える