Podczas debugowania naszej aplikacji w środowisku linux możemy zauważyć, że niektóre zdarzenia - POLLHUP|POLLIN
występują tylko w systemie Linux. Nasza aplikacja korzysta z gniazd unixowych. Kiedy robimy:implementacja sondowania na Linuksie kontra implementacja sondowania na solaris
ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout);
strace pokazuje:
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}])
Taka sytuacja nie występuje w systemie Solaris (sam wniosek): Struss pokazuje:
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
można proszę wyjaśnić mi, co jest różnica między ankietą w solaris a ankietą w Lunx? Thx z góry za wszystkie odpowiedzi.
Linux zwraca POLLIN (dane do odczytu) nawet w przypadku EOF. Linux nie ma flagi POLLEOF. To wszystko, o czym teraz mówię. – B4NZ41