Слишком мало аргументов для ошибки функции? (C ++) [закрыто]

Когда вы используете 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() снова.

-8
задан jklazzara 28 April 2013 в 17:01
поделиться