When debugging our application in linux environment, we can notice that some events - POLLHUP|POLLIN are found only in Linux. Our application uses UNIX sockets. When we do this:
ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout);
strace shows:
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}])
This situation never occurs in Solaris (single application): struss shows:
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
Could you explain to me what is the difference between polling in Solaris and polling in liunx? Thanks in advance for all the answers.
Josip
source share