как errno устанавливается ioctl () в c - PullRequest
0 голосов
/ 14 ноября 2010

Я использую ioctl (), чтобы проверить, не блокируется ли чтение конца канала. Я установил ioctl(the_pipe[0], FIONBIO, ...) (я не уверен, каким должен быть третий параметр, могу ли я установить его в NULL?).

Как я понимаю, read(the_pipe[0], buf, buf_len); должен установить код ошибки для EWOULDBLOCK (EAGAIN), но где этот код ошибки установлен, как его получить?

Спасибо

Ответы [ 2 ]

3 голосов
/ 14 ноября 2010

errno доступно после включения errno.h

0 голосов
/ 14 ноября 2010

Обратите внимание, что errno устанавливается системными вызовами, но не сбрасывается.То есть, если вы не проверяете ошибки после каждого системного вызова или не очищаете явно errno до рассматриваемого вызова, вы не будете уверены, какой системный вызов установлен в errno.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...