在 linux 环境中调试我们的应用程序期间,我们可以观察到一些事件 -POLLHUP|POLLIN
仅在 linux 上发生。我们的应用程序使用 unix 套接字。当我们这样做时:
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
你能解释一下solaris中的poll和liunx中的poll有什么区别吗?提前谢谢所有答案。