Мне было интересно, что делает nfds
, прочитав разные руководства, я получаю только ответ Это наивысший пронумерованный файловый дескриптор плюс один. Для чего он точно используется?Что такое nfds from select(), используемое для
ответ
Когда вы используете select()
, вы пытаетесь проверить состояние набора дескрипторов файлов. Возможный диапазон файловых дескрипторов, которые вас интересуют, варьируется от низкого значения 0 (стандартный ввод) до некоторого максимального значения (самый высокий файловый дескриптор, который вы открыли, который вас интересует при проверке состояния). Вы должны указать select()
, насколько велик список файловых дескрипторов, потому что общее число может быть «огромным» (например, 32767). В этом случае требуется, чтобы ядро обработало дескрипторы, плюс вы не смогли инициализировать fd_set
до этого количества записей. FD_SETSIZE
также фигурирует в уравнении, но иногда вы можете изменить это значение.
Итак, если вы хотите контролировать дескрипторы 24-31, вы бы установить nfds
до 32, и убедитесь, что вы используете FD_ZERO()
к нулю весь fd_set
и FD_SET()
установить записи 24-31. Также обратите внимание, что select()
изменяет входные параметры, поэтому вы должны использовать FD_ISSET()
для тестирования после возврата select()
и, как правило, вам необходимо повторно инициализировать (или скопировать сохраненное значение) fd_set
перед вызовом select()
.
Из имени 'nfds' (* количество файлов дескрипторы *) Я бы ожидал '7', когда я хочу контролировать число fd' 24' до '31'. Почему '32'? (Я знаю, что вы правы, страница руководства говорит об этом тоже, но мне интересно, почему) – hek2mgl
@ hek2mgl: Это потому, что набор начинается с дескриптора файла 0; в интерфейсе нет способа указать другую отправную точку. Это может замедлить работу, если вы используете 'select()' на сервере с тысячами дескрипторов открытых файлов. –
Вниз: даже если ответ (в основном) правильный, он пропускает важные детали и формулируется таким образом, который невозможно понять. Вместо этого см. Http://unix.stackexchange.com/questions/7742/whats-the-purpose-of-the-first-argument-to-select-system-call. – marcv81
- 1. Что делает «select», когда nfds равно 0?
- 2. Что такое «ClassName», используемое для аутентификации WorklightConfig?
- 3. Что такое самосоединение в mysql, используемое для
- 4. Что является лучшей альтернативой SELECT ..., (SELECT ... FROM ...) FROM (SELECT ... FROM (SELECT ... FROM ...)) `Типы конструкций?
- 5. Что такое «configureOnly», используемое в ConnectionMultiplexer.GetEndPoints()?
- 6. Что такое управление телефоном Windows, используемое в
- 7. Что такое **/*. FileExtension, используемое в ant?
- 8. Что такое свойство Infinity, используемое в Javascript?
- 9. Что такое эквивалент Access '' SELECT DISTINCTROW * FROM ... 'в SQLite?
- 10. Что-то эквивалентное «SELECT * FROM (SELECT table_name FROM ...)»?
- 11. Что такое пространство имен деталей, обычно используемое для
- 12. Что такое регулярное выражение, используемое для получения определенной строки?
- 13. Что такое значение «revpos», используемое для вложений CouchDB?
- 14. Что такое имя ключевого поля, используемое для aspxgridview
- 15. Что такое if (c! = EOF), используемое для обратного польского calculater
- 16. Что такое строка и массив в c и что такое strlen(), используемое для
- 17. Что такое пространство имен, используемое в хранилище данных App Engine?
- 18. SELECT in FROM-FROM другого SELECT
- 19. «SELECT * FROM ...» VS «SELECT ID FROM ...» Производительность
- 20. SQL: SELECT FROM (SELECT, SELECT)
- 21. SQL SELECT from SELECT
- 22. select count (*) from select
- 23. Что такое ключевое слово «лицензия», используемое в python?
- 24. Что такое бинарное имя компоновщика, используемое Yocto Linux
- 25. Что такое значение «hash», используемое в файле App_Code.compiled?
- 26. Что такое многоточие (пустая строка), используемое в грамматике Treetop (PEG)?
- 27. Что такое 'define', используемое в JavaScript (кроме очевидного)?
- 28. Что такое уравнение, используемое в ccf R и кроссовере Джулии?
- 29. Что такое «point-in-select» в MySQL?
- 30. Что означает «select * from a..c» означает
http://unix.stackexchange.com/questions/7742/whats-the-purpose-of-the-first-argument-to-select-system-call –