Описание тега poll-syscall

NonePoll() выполняет аналогичную задачу для select(): он ожидает, пока один из набора файловых дескрипторов станет готовым к выполнению ввода-вывода.
3 ответа

POLLHUP против POLLNVAL, или что такое POLLHUP?

Руководства говорят для опроса (2): POLLHUP - повесить трубку (только вывод) POLLNVAL - Неверный запрос: fd не открыт (только вывод) В чем именно разница? Написание простой программы показывает, что POLLNVAL сработает, если я закрою дескриптор файла…
05 авг '14 в 19:53
0 ответов

Когда можно написать функциональный блок

Я использовал poll системный вызов и в руководстве написано, что POLLOUT указан в поле pollfd.events, чтобы проверить, что функция записи не блокируется. У меня вопрос, в какой ситуации может записать функциональный блок? Разве это возможно только т…
31 янв '19 в 17:31
1 ответ

Почему вызов select() имеет тайм-аут? Каковы разумные значения для него в общих сценариях?

Мне интересно значение тайм-аута в вызове POSIX select(). Я понимаю, почему может потребоваться значение 0 (для опроса дескрипторов файлов). Какие другие значения обычно используются и с какой целью?
04 ноя '16 в 16:20
1 ответ

Read() после опроса возвращает POLLIN и POLLERR

У меня есть модель пула потоков aysnc для управления сетевым подключением. Один поток диспетчера, который продолжает вызывать poll (), и пул рабочих потоков, который либо считывает / записывает один раз poll (), указывает на это. Рассмотрим случай, …
1 ответ

Возможно ли сбой сетевой записи (), но poll() не обнаруживает

Возможно ли, что вызов write() для сокета не удался, но poll() не обнаружил никакой ошибки? Существуют ли какие-либо категории ошибок, которые могут вызвать сбой записи, но не считаются ошибкой системным вызовом poll()? У меня есть ветка диспетчера,…
23 май '17 в 00:00
1 ответ

Как я могу использовать опрос для приема нескольких клиентов? (TCP-сервер) (C)

Похоже, что этот опросный бизнес был написан сумасшедшим, и я не уверен, как его использовать, чтобы несколько клиентов могли подключиться к серверу, а затем отправить свой вклад всем остальным клиентам. Поэтому, если я хочу, чтобы у меня было три к…
15 дек '14 в 22:52
0 ответов

Доступ к структуре Pollfd во время выполнения системного вызова poll()

У меня есть отдельный поток опроса, который выполняет системный вызов poll(). В событии публикуется рабочий поток для фактического чтения / записи из сети. Поток опроса отключает fd для события, если оно обрабатывается рабочим потоком. Когда рабочий…
17 май '17 в 20:20
1 ответ

Может ли poll() возвращать событие POLLIN даже после того, как партнер повесил трубку?

Я вижу, что системный вызов poll() возвращает событие POLLIN даже после того, как одноранговый узел был закрыт сокетом. Я вижу и ПОЛЛИН, и ПОЛЛЕРР. И это продолжает происходить даже после того, как вызов read() вернул -1. Моя логика обрабатывает POL…
07 май '17 в 00:49
0 ответов

POLLERR с сетевыми розетками

Я использую сокеты netlink для пространства пользователя для связи пространства ядра. В одном из случаев вызов recvmsg завершается неудачно с ошибкой 105, равной ENOBUFS, и тогда на fd устанавливается POLLERR. После этого между пользовательским прос…
4 ответа

Как обращаться с сокетом Linux, хранящимся в POLLERR, POLLHUP и POLLNVAL?

Мне интересно, что делать, когда опрос устанавливает эти биты? Закрыть сокет, игнорировать или как?
1 ответ

И сервер и сокет отчетности ECONNRESET. В чем дело?

У меня есть C++ сервер и клиент. Я использую системный вызов poll() для мониторинга сокетов на сервере на предмет готовности к чтению, готовности к записи и ошибок. Я вижу, что для некоторых соединений poll() обнаруживает ECONNRESET после отправки п…
12 июн '17 в 18:52
2 ответа

Как заставить poll() к ошибке

Я пытаюсь проверить сценарий в моем коде, когда poll () возвращает ошибку. Но я не знаю, как заставить poll () возвращать ошибку. Я попытался заблокировать poll () на неопределенный срок и попытался отправить SIGINT, но это просто остановило процесс…
29 июн '17 в 17:47
3 ответа

Почему опрос продолжает возвращаться, хотя нет данных?

Я написал небольшую тестовую программу, чтобы выяснить, как разговаривать с poll, Я создал три файла testa, testb, testc и написал строку hello\n к первому. Итак, вот мой призыв poll: poll(polls.data(),polls.size(),-1) Согласно manpage, время ожидан…
04 сен '13 в 14:35
3 ответа

Почему этот тестовый код использует такой высокий процессор?

Код ниже работает, он отправляет все правильные данные, и он получает правильные данные. Когда я использую его для тестирования очень быстрого сервера, загрузка процессора составляет ~10%. Однако, когда я тестирую медленный сервер, он возрастает до …
26 янв '14 в 13:00
1 ответ

Опрос не возвращается, даже если есть изменения в GPIO FD

Я пытаюсь прочитать значение GPIO, используя каждый раз, когда он меняет состояние. /sys/class/gpio/gpio499/value Я поставил /sys/class/gpio/gpio499/edge быть одновременно Я пытаюсь отслеживать изменение значения с помощью команды опроса в одном отд…
1 ответ

Удалить fd из ожидающего набора pollfd одновременно с запущенным poll()

Я слежу за списком файловых сокетов и жду событий POLLIN. Сначала я добавляю fds в массив и запускаю poll() для этого массива. Далее, в некоторых случаях я хочу удалить fd из этого массива (без закрытия). А иногда это может происходить одновременно …
15 ноя '20 в 16:34
1 ответ

проверка возвращается в struct pollfd

Согласно опросу man(2): int poll(struct pollfd *fds, nfds_t nfds, int timeout); struct pollfd { int fd; /* file descriptor */ short events; /* requested events */ short revents; /* returned events */ }; Если я напишу if(! (fds.revents &1 )) посл…
22 мар '21 в 23:23
1 ответ

Вызов recv возвращает 0 против события POLLHUP в опросе C

(В программировании сокетов C, используяpollдля управления fd и его событиями)с сокетом потока данных, возвращенным изaccept()call, в чем разница между событием POLLHUP и получением 0 при вызове recv(fd, ...)? Оба они, кажется, указывают на то, что …
18 июн '22 в 11:34
0 ответов

Как перенести «выбрать» на «опрос» для третьих данных об ошибках?

У меня есть следующий код, который использует выбор: fd_set fdsu; FD_ZERO(&fdsu); FD_SET(fd, &fdsu); fd_set efds = fdsu; fd_set dfds = fdsu; while (1) { select(cameraUSBP.fd + 1, NULL, &dfds, &efds, NULL); if (FD_ISSET(cameraUSBP.fd,…
18 июн '22 в 01:43