kqueue () и O_NONBLOCK - PullRequest
       16

kqueue () и O_NONBLOCK

2 голосов
/ 18 марта 2012

Если вы используете kqueue (), вы должны установить O_NONBLOCK в своих файловых дескрипторах? Другими словами, гарантирует ли kqueue (), что следующая операция ввода-вывода для готового файлового дескриптора не будет блокироваться, независимо от того, установлен ли O_NONBLOCK?

Ответы [ 2 ]

3 голосов
/ 26 октября 2012

Если вы используете kqueue (), должны ли вы устанавливать O_NONBLOCK в своих файловых дескрипторах?

Нет.

Другими словами, выполняет ли kqueue ()гарантировать, что следующая операция ввода / вывода для готового файлового дескриптора не будет заблокирована, независимо от того, установлен ли O_NONBLOCK?

Да.

2 голосов
/ 06 декабря 2013

Вам не нужно. Тем не менее, я обычно делаю в качестве проверки вменяемости Это делает такие операции, как read (), возвращает -1 и устанавливает errno в EWOULDBLOCK. Я бы предпочел получить EWOULDBLOCK и знать, что моя реализация kqueue содержит ошибки, чем блокировка вызовов read () (и, следовательно, моя программа зависла) по неизвестным причинам.

...