Während des Debuggen unserer Anwendung in Linux-Umgebung können wir beobachten, dass einige Ereignisse - POLLHUP|POLLIN
nur unter Linux auftreten. Unsere Anwendung verwendet Unix-Sockets. Wenn wir das tun:Umfrage Implementierung auf Linux vs Umfrage Implementierung auf Solaris
ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout);
strace zeigt:
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}])
Diese Situation tritt nie in solaris (gleiche Anwendung): Struss zeigt:
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
Können Sie mir bitte erklären, was ist Der Unterschied zwischen Umfrage in Solaris und Umfrage in Liunx? Thx im Voraus für alle Antworten.
Linux gibt POLLIN (zu lesende Daten) auch im Falle von EOF zurück. Linux gibt es keine POLLEOF Flagge. Das ist alles, worüber ich jetzt schreibe. – B4NZ41