Это немного зависит от того, говорите ли вы о сокетах или о реальных файлах.
Строго говоря, дескриптор никогда не имеет своих собственных буферов;это просто дескриптор для более глубокой абстракции.
Объекты файловой системы имеют свои "собственные" буферы, по крайней мере, когда они необходимы.То есть, если программа записывает меньше, чем размер блока файловой системы, ядро не имеет другого выбора, кроме как прочитать блок FS и объединить запись с существующими данными.
Этот буфер присоединен к vnodeболее низкий уровень, возможно, инод.Он принадлежит файлу, а не дескриптору.Он может храниться в течение длительного времени, если память доступна.
В случае сокета поток, но не конкретный дескриптор, фактически имеет буферы, которыми он владеет.