C, Linux, переача сокета дочерему процессу
1) создаю pipe
2) fork();
Далее в родительском процессе:
3.parent) socket()
4.parent) bind()
5.parent) client=accept()
6.parent) передаю через pipe дочернему процессу cleint
7.worker) пытаюсь записать в сокет, но вылетает ошибка: Bad file descriptor
как я теперь понимаю из дочернего процесса нельзя работать с сокетом родительского, т.к. это разные процессы.
Подскажите пожалуйста путь решения, очень важно выполнять работу с клиентом на воркере.
Спасибо!
Не являясь специалистом по Linux могу лишь сказать, что вам видимо нужно неким образом сделать дубликат сокета (хэндла на него) - для воркера.
п.с. и неплохо бы ещё мьютекс добавить, для контроля доступа к сокету, если этого нет.
есть структура для сокета sockaddr, она есть и у клиента, её кто нибудь передавал дочернему процессу? и как из неё сделать тот самый int sockId?
не помню точно, но кажись, там надо указать общие адресное пространство при создании дочернего процесса.