EINTR и epoll_ctl, нужно ли проверять errno?
Я просматриваю код для FreeBSD. Код используетkevent
интерфейс программирования. Теперь я нахожу строки, как показано ниже:
status = kevent(...)
if(status < 0){
if(EINTR == errno){
goto l_kevent;
}
/* ... */
}
Мне нужно портировать код для Linux, и мне интересно... Должен ли я проверять вызовы Linux. я знаю этоepoll
имеетepoll_pwait
, и это все еще должно быть проверено на . Но имеющаяся у меня документация ничего не говорит мне о возможности прерывания вызовов.
Я могу посмотреть исходный код epoll. Но, каким бы скромным я ни был, я не знаю, как в ядре обрабатываются сигналы. Итак, если сам код полагается на какую-то механику прерывания, я не знаю, где искать интересующие коды возврата.
Надеюсь, я объяснил проблему. Вопрос, еще раз: моя документация ничего не говорит мне оepoll_ctl
быть прерываемым, что мне делать? Должен ли я проверитьEINTR
?
PS Если кто-то укажет мне исходный код для epoll, который я могу понять, я с удовольствием попытаюсь провести собственное исследование.