Trong khi gỡ lỗi ứng dụng của chúng ta trong môi trường Linux, chúng ta có thể quan sát thấy một số sự kiện - POLLHUP|POLLIN
chỉ xảy ra trên linux. Ứng dụng của chúng tôi sử dụng ổ cắm unix. Khi chúng ta làm:thực hiện thăm dò ý kiến trên linux vs poll thực hiện trên solaris
ret = poll(xpoll->pfd, xpoll->pfd_count, xpoll_timeout);
strace cho thấy:
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}])
tình hình đó không bao giờ xảy ra trong solaris (cùng ứng dụng): struss cho thấy:
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
Bạn có thể vui lòng giải thích cho tôi là những gì sự khác biệt giữa các cuộc thăm dò trong solaris và thăm dò ý kiến trong liunx? Thx trước cho tất cả các câu trả lời.
Linux trả về POLLIN (dữ liệu để đọc) ngay cả trong trường hợp EOF. Linux không có cờ POLLEOF. Đó là tất cả những gì tôi có bây giờ. – B4NZ41