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, который я могу понять, я с удовольствием попытаюсь провести собственное исследование.

0 ответов

Другие вопросы по тегам