C: предел функции опроса
Когда я использую функцию опроса и устанавливаю количество выше 1000, оно вообще не спит. Любые идеи о том, что это может быть. opengroup ничего не говорит об ограничении, и я почти не исчерпываю память. Но когда я проверяю указатель, целое число отрицательно. Есть идеи, что это может быть?
2 ответа
Я предполагаю, что ваш предел для файловых дескрипторов установлен в 1024. Вы можете увидеть это, запустив ulimit -n
в Баш (Unix). Для окон см. http://support.microsoft.com/kb/111855. Если вы работаете в linux, вы можете увеличить этот лимит, изменив /etc/limits.conf (или /etc/security/limits.conf или аналогичный), например:
* soft nofile 10240
* hard nofile 10240
Обратите внимание, что после изменения лимитов вам придется выйти и снова войти в систему, чтобы получить новые значения.
Если poll()
возвращает отрицательное число, вы должны использовать perror("poll");
показать причину.
Если причина - "Неверный аргумент", это может быть по этой причине (из Linux poll()
справочная страница):
EINVAL
Значение nfds превышает
RLIMIT_NOFILE
значение.
Кстати, спецификация POSIX также перечисляет это как ошибку:
Функция poll() должна завершиться ошибкой, если: ...
[EINVAL]
nfds
аргумент больше чем{OPEN_MAX}