Как дочерние процессы apache слушают, если они являются корневыми?

Я вижу здесь: https://httpd.apache.org/docs/current/invoking.html

«Если для прослушивания, указанного в файле конфигурации, по умолчанию установлено значение 80 (или любой другой порт ниже 1024), тогда необходимо иметь привилегии root для запуска apache, чтобы он мог связываться с этим привилегированным портом.

После запуска сервера и выполнения нескольких предварительных действий, таких как открытие файлов журнала, он запустит несколько дочерних процессов, которые будут прослушивать и отвечать на запросы от клиентов. Основной процесс httpd продолжает работать от имени пользователя root, но дочерние процессы работают от имени пользователя с меньшими привилегиями. "

Вопрос: как дочерний процесс может сделать это? Входящий запрос поступает на порт 80, к которому теперь привязан мастер.

Я предполагаю, что главный процесс вызовет вызов bind (), и дочерний процесс сможет затем выполнить вызов listen () для привязанного сокета? Или главный сервер передает дочерним элементам входящие данные?

0
задан 8 June 2016 в 07:11
1 ответ

Первый пер: https://httpd.apache.org/docs/current/invoking.html

  1. Дети наследуют сокет

ковенер говорит: "Обычно слуховое сокет наследуется детьми, когда они вилкой. Они могут либо попытаться вызвать на нём accept, либо подраться из-за мьютекса и позволить одному из них попасть в accept()"

Далее,

  1. Я нашёл вывод строк для Solaris дочернего процесса

http://httpd.apache.org/docs/current/misc/perf-tuning.html

Там также сказано: "...после принятия соединения, поток слушателя пробуждает рабочий поток для выполнения обработки запроса"

Для полноты, так как это процесс слушателя, я буду считать, что он уже слушал()"

. Этого вызова нет в приведенном выше выводе строк

.
0
ответ дан 5 December 2019 в 10:19

Теги

Похожие вопросы