Gibt es eine Möglichkeit, das errno
herauszufinden, wenn epoll_wait
EPOLLERR
für ein bestimmtes fd zurückgibt?
Gibt es weitere Informationen über die Art des Fehlers?
Bearbeiten:
Hinzufügen weiterer Informationen zur Vermeidung von Mehrdeutigkeiten
epoll_wait
wartet auf eine Reihe von Dateideskriptoren. Wenn Sie epoll_wait
aufrufen, übergeben Sie ihm ein Array von epoll_event
structures:
Die epoll_data_t
-Struktur hat dieselben Details wie die, die Sie mit epoll_ctl
verwendet haben, um epoll einen Dateideskriptor hinzuzufügen:
Was ich suche ist, was passiert, wenn ein Fehler in einem der Dateideskriptoren auftritt, auf die epoll wartet.
ie: epoll_event.events & EPOLLERR == 1
- Gibt es eine Möglichkeit, mehr Details über den Fehler im Dateideskriptor herauszufinden?
Nur ein kleiner Punkt: Ihr Test wird aus zwei Gründen nicht korrekt funktionieren. Wenn EPOLLERR beispielsweise als 0x8 definiert ist, vergleicht Ihr Test 8 mit Eins (da == höhere Priorität hat als & amp;), und gibt Ihnen eine Null, und dann das mit der Ereignismaske.
Was Sie wollen, ist: (epoll_event.events & amp; EPOLLERR)! = 0, um zu testen, ob das EPOLLERR-Bit gesetzt ist.
epoll_wait gibt -1 zurück, wenn ein Fehler auftritt, und setzt errno entsprechend. Siehe "man 2 epoll_wait" für weitere Informationen.