Могу ли я открыть сокет и передать его другому процессу в Linux?
В Linux, возможно ли мне открыть сокет и передать сокет другому процессу?
Если да, можете ли вы рассказать мне, где я могу найти пример?
Спасибо.
Ответ 1
Да, вы можете, используя sendmsg() с SCM_RIGHTS из одного процесса в другой:
SCM_RIGHTS - Отправить или получить набор открыть дескрипторы файлов из другого обработать. Часть данных содержит целочисленный массив файловых дескрипторов. Пропущенные файловые дескрипторы ведут себя как хотя они были созданы с dup(2).
Это не типичное использование. Чаще всего, когда процесс наследует сокеты от своего родителя (после a fork()). Любые обработчики файлов (включая сокеты), не закрытые, будут доступны дочернему процессу. Таким образом, дочерний процесс наследует родительские сокеты.
Серверный процесс, который прослушивает подключения, называется демоном. Обычно это связано с каждым новым соединением, создавая процесс обработки каждого нового запроса. Пример типичного демона: