Durante il debug della nostra applicazione in ambiente Linux possiamo osservare che alcuni eventi - POLLHUP|POLLIN
si verificano solo su linux. La nostra applicazione utilizza prese unix. Quando facciamo:implementazione di sondaggi su linux e implementazione sondaggio su solaris
ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout);
strace mostra:
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}])
Questa situazione non si verifica in Solaris (stessa applicazione): Struss mostra:
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
Può cortesemente spiegare che cosa è la differenza tra sondaggio in solaris e sondaggio in liunx? Thx in anticipo per tutte le risposte.
Linux restituisce POLLIN (dati da leggere) anche in caso di EOF. Linux non c'è nessun flag POLLEOF. Questo è tutto ciò che mi riguarda adesso. – B4NZ41