Есть ли способ, с помощью которого я могу сделать функцию чтения сокетов как неблокирующую. У меня многопоточное серверное приложение, я хочу, чтобы моя функция accept() была блокирующей , но функция read() должна быть неблокирующей и должна возвращать EAGAIN, когда нет данных для чтения.Как сделать функцию чтения сокета неблокирующей
Я попытался сделать чтение() неблокируемому по
fcntl(sock, F_SETFL, O_NONBLOCK);
но он начал давать мне ресурс временно недоступен ошибка.
Функция 'int socket (int domain, int type, int protocol);' поддерживает опцию 'O_NONBLOCK' как тип. Вы пробовали использовать его? – Omar
@ Омар да, я использую приведенное выше. –
@Omar: Fresher вызывает 'accept()' и хочет, чтобы он блокировался, поэтому 'O_NONBLOCK' не может использоваться в гнезде для прослушивания. Даже если бы это было так: «O_NONBLOCK» не наследуется принятыми клиентскими сокетами, поэтому он должен применяться с помощью 'fcntl()' на каждом отдельном клиентском сокете после его принятия. –