Справочная страница Linux по select () говорит, что первый аргумент "nfds" select () должен быть дескриптор файла с самым большим номером в любом из трех наборов плюс 1.. Что я уже знаю, так это то, что этот аргумент используется для сокращения поиска измененных файловых дескрипторов. (потому что нет необходимости перебирать все элементы FD_SETSIZE ..)
Но мне интересно, почему вам нужно вручную увеличивать это значение на 1. Я имею в виду, почему этого не делает сама функция? Почему я не могу просто передать значение самого высокого дескриптора файла (без приращения)?





Я знаю, это сбивает с толку. Подумайте об этом так: если у вас есть массив
int a[8], то есть его индексы отa[0]доa[7], почему вы должны добавить 1 при записиfor(i = 0; i < 8; i++) a[i] = 0;