Я могу открыть сокет и передать его другому процессу в Linux

В Linux для меня действительно ли возможно открыть сокет и передать сокет другому процессу? Если да, можно сказать мне, где я могу найти пример?

Спасибо.

45
задан n179911 4 January 2010 в 05:16
поделиться

1 ответ

Да, вы можете, используя sendmsg() с SCM_RIGHTS от одного процесса к другому:

SCM_RIGHTS - Посылать или получать набор из открытые дескрипторы файлов из другого процесс. Часть данных содержит целочисленный массив файловых дескрипторов. Переданные дескрипторы файлов ведут себя как хотя они были созданы с dup(2).

http://linux.die.net/man/7/unix

Это не типичное использование. Чаще всего это происходит, когда процесс наследует сокеты от своего родителя (после fork()). Незакрытые файловые хэндлы (включая сокеты) будут доступны дочернему процессу. Таким образом, дочерний процесс наследует родительские сокеты.

Серверный процесс, который прослушивает соединения, называется демоном. Обычно он вилкирует каждое новое соединение, порождая процесс для обработки каждого нового запроса. Пример типичного демона здесь:

http://www.steve.org.uk/Reference/Unix/faq_8.html#SEC88

Прокрутите вниз до void process().

60
ответ дан 26 November 2019 в 21:25
поделиться
Другие вопросы по тегам:

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