C: предел функции опроса - PullRequest
       3

C: предел функции опроса

1 голос
/ 10 апреля 2011

Когда я использую функцию опроса и устанавливаю количество выше 1000, он вообще не спит.Любые идеи о том, что это может быть.opengroup ничего не говорит об ограничении, и я почти не исчерпываю память.Но когда я проверяю указатель, целое число отрицательно.Есть идеи, что это может быть?

Ответы [ 2 ]

1 голос
/ 10 апреля 2011

Я предполагаю, что ваш предел для файловых дескрипторов установлен на 1024. Это можно увидеть, запустив ulimit -n в bash (unix). Для окон см. http://support.microsoft.com/kb/111855. Если вы работаете в Linux, вы можете увеличить этот лимит, изменив /etc/limits.conf (или /etc/security/limits.conf или аналогичный), например:

*               soft    nofile  10240
*               hard    nofile  10240

Обратите внимание, что после изменения лимитов вам придется выйти и снова войти в систему, чтобы получить новые значения.

1 голос
/ 10 апреля 2011

Если poll() возвращает отрицательное число, вы должны использовать perror("poll");, чтобы показать причину.

Если причиной является "Неверный аргумент", это может быть по этой причине (с Linux poll() man-страница ):

EINVAL

Значение nfds превышает значение RLIMIT_NOFILE.

Кстати, спецификация POSIX также перечисляет это как ошибку:

Функция poll () должна завершиться ошибкой, если: ... [EINVAL] Аргумент nfds больше чем{OPEN_MAX}

...