Я вижу здесь: https://httpd.apache.org/docs/current/invoking.html
"Если для параметра Listen, заданного в файле конфигурации, по умолчанию установлено значение 80 (или любой другой порт ниже 1024), то необходимо иметь привилегии root для запуска apache, чтобы он мог связываться с этим привилегированным портом.
После того, как сервер запустился и выполнил несколько предварительных действий, таких как открытие файлов журнала, он запустит несколько дочерних процессов, которые выполняют работу по прослушиванию и ответу на запросы от клиентов. Основной процесс httpd продолжает работать от имени пользователя root, но дочерние процессы работают от имени пользователя с меньшими привилегиями. "
Вопрос: как это сделать дочернему процессу? Входящий запрос поступает на порт 80, к которому теперь привязан мастер.
Я предполагаю, что главный процесс вызовет вызов bind (), а потомок сможет выполнить вызов listen () для привязанного сокета? Или главный сервер передает детям входящие данные?
Первый за: https://httpd.apache.org/docs/current/invoking.html
covener говорит: «Обычно слушающий сокет наследуется дочерними элементами, когда они разветвляются. Они могут либо попытаться вызвать accept на нем, либо они могут бороться за мьютекс и позволить одному войти в accept ()»
Следующий,
http://httpd.apache.org/docs/current/misc/perf-tuning.html
В нем также говорится: «... при принятии соединения поток слушателя пробуждает рабочий поток для выполнения обработки запроса».
Для полноты, поскольку это процесс слушателя, я предполагаю, что он уже выполнил listen (). Этого вызова нет в выходных данных фермы выше.