The OpenNET Project / Index page

[ новости /+++ | форум | теги | ]

форумы  помощь  поиск  регистрация  майллист  ВХОД  слежка  RSS
"как передать сокет в другой процесс"
Вариант для распечатки  
Пред. тема | След. тема 
Форумы Программирование под UNIX (Public)
Изначальное сообщение [Проследить за развитием треда]

"как передать сокет в другой процесс"  
Сообщение от devcoder email(??) on 06-Сен-07, 17:27 
Мастер процесс listen() принимает соединения accept(),
далее раздаёт "принятые" сокеты своим деткам-процессам (не тредам),
которые и занимаются передачей данных.

Возможно ли такое и как (направление)?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

 Оглавление

Сообщения по теме [Сортировка по времени, UBB]


1. "как передать сокет в другой процесс"  
Сообщение от vic (??) on 06-Сен-07, 17:45 
>Мастер процесс listen() принимает соединения accept(),
>далее раздаёт "принятые" сокеты своим деткам-процессам (не тредам),
>которые и занимаются передачей данных.
>
>Возможно ли такое и как (направление)?

man fork
наследование дескрипторов
классика жанра, с 1970 года =)

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

3. "как передать сокет в другой процесс"  
Сообщение от devcoder email(??) on 06-Сен-07, 17:55 
>man fork
>наследование дескрипторов
>классика жанра, с 1970 года =)

забыл уточнить, детки конечно же отфоркнуты раньше и listen() и accept()


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

2. "как передать сокет в другой процесс"  
Сообщение от Forth (??) on 06-Сен-07, 17:55 
>Мастер процесс listen() принимает соединения accept(),
>далее раздаёт "принятые" сокеты своим деткам-процессам (не тредам),
>которые и занимаются передачей данных.
>
>Возможно ли такое и как (направление)?

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

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

4. "как передать сокет в другой процесс"  
Сообщение от devcoder email(??) on 06-Сен-07, 18:18 
>sendmsg() оно и сокеты позволяет передавать другим процессам.

Удивительно, не знал про такие возможности sendmsg.

В man-е, к сожалению, ответов не нашел.

int sendmsg(int s, const struct msghdr *msg, int flags);

Для каждой пары мастер<->потомок нужно по паре сокетов создавать для передачи?
Что передаётся в msg - дескриптор акцепнутого сокета?
Где можно почитать поконкретней?

Если есть любая доп.информация буду очень признателен.

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

5. "как передать сокет в другой процесс"  
Сообщение от Michelnok (ok) on 06-Сен-07, 18:46 
>Где можно почитать поконкретней?

У Стивенса в UNIX Network Programming (http://www.unpbook.com/)

>Если есть любая доп.информация буду очень признателен.

Возьми примеры к вышеуказанной книге на http://www.unpbook.com/src.html
Там в каталоге lib есть write_fd.c и read_fd.c

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

6. "как передать сокет в другой процесс"  
Сообщение от devcoder email(??) on 06-Сен-07, 19:24 
Большое спасибо, то что нужно.

ЗЫ: бегло глянул примеры - видимо Сысоев Стивенса тоже уважает :-),
но его nginx-овые сырцы без литра не разобрать,
сначала в полную нирвану впасть нужно и полностью очистить сознание.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

7. "как передать сокет в другой процесс"  
Сообщение от Forth (??) on 07-Сен-07, 10:47 
>Если есть любая доп.информация буду очень признателен.

     Any valid descriptor may be sent in a message.  The file descriptor(s) to
     be passed are described using a struct cmsghdr that is defined in the
     include file <sys/socket.h>.  The type of the message is SCM_RIGHTS, and
     the data portion of the messages is an array of integers representing the
     file descriptors to be passed.  The number of descriptors being passed is
     defined by the length field of the message; the length field is the sum
     of the size of the header plus the size of the array of file descriptors.

     The received descriptor is a duplicate of the sender's descriptor, as if
     it were created with a call to dup(2).  Per-process descriptor flags, set
     with fcntl(2), are not passed to a receiver.  Descriptors that are await-
     ing delivery, or that are purposely not received, are automatically
     closed by the system when the destination socket is closed.


Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

8. "как передать сокет в другой процесс"  
Сообщение от devcoder email(??) on 07-Сен-07, 11:04 
Спасибо, но что это за man, SEND(2)? С какой системы?

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

9. "как передать сокет в другой процесс"  
Сообщение от Forth (??) on 07-Сен-07, 11:34 
>Спасибо, но что это за man, SEND(2)? С какой системы?

man 4 unix с FreeBSD

Высказать мнение | Ответить | Правка | Наверх | Cообщить модератору

Архив | Удалить

Индекс форумов | Темы | Пред. тема | След. тема
Оцените тред (1=ужас, 5=супер)? [ 1 | 2 | 3 | 4 | 5 ] [Рекомендовать для помещения в FAQ]




Партнёры:
PostgresPro
Inferno Solutions
Hosting by Hoster.ru
Хостинг:

Закладки на сайте
Проследить за страницей
Created 1996-2025 by Maxim Chirkov
Добавить, Поддержать, Вебмастеру