Linux環境でのアプリケーションのデバッグ中に、POLLHUP|POLLIN
というイベントがLinuxでのみ発生することがわかります。私たちのアプリケーションはUNIXソケットを使用しています。私たちが行うと:sollでのlinuxとpollのインプリメンテーションの実装
ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout);
straceのは示しています
poll([{fd=4, events=POLLIN|POLLPRI|POLLERR|POLLHUP}, {fd=6, events=POLLIN|POLLPRI|POLLERR|POLLHUP}, {fd=7, events=POLLIN|POLLPRI|POLLERR|POLLHUP}], 3, 16) = 1
([{fd=7, revents=POLLIN|POLLHUP}])
この状況では、Solaris(同じアプリケーション)で発生することはありません: strussは示しています
2463/3: fd=569 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
2463/3: fd=639 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
2463/3: fd=631 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=POLLIN
2463/3: fd=1160 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
2463/3: fd=400 ev=POLLIN|POLLPRI|POLLERR|POLLHUP rev=0
あなたは何がある私に説明していただけますsolunの投票とliunxの投票の違いは? すべての回答を事前にThxにしてください。
EOFの場合でも、LinuxはPOLLIN(読み込むデータ)を返します。 Linux POLLEOFフラグはありません。 それは私が今すべてについてです。 – B4NZ41