Я полагаю, что это происходит из-за того, что HPUX добавил сокеты в ядро. Если я правильно помню (с конца 1980-х), они добавили сокеты Berkeley в качестве разделяемой объектной библиотеки - по сути, один или два слоя поверх файловой системы ввода-вывода.
То, что UX продолжает вести себя таким образом, указывает на то, что вызов socket () не использует повторно неиспользуемые файловые дескрипторы, возможно потому, что он не знает о них, и ни одному инженеру по техническому обслуживанию не было поручено добавить это. В Linux socket () является такой же частью ядра, как и другие основные компоненты, поэтому, конечно, он знает, какие файловые дескрипторы доступны для повторного использования.