LINUX.ORG.RU

Fork


0

0

Есть программа сервер, которая при каждом коннекте форкается, и запускает отдельную подпрограмму обслуживания клиентов, так вот после того как клиент отсоединился форкнутый процесс остается висеть в памяти (хотя функция вся выполнилась, до последней строчки кода) Заранее благодарен, И с Новым Годом!!

anonymous

если я правильно понял то висит чаилд причем если чаилд уже сделал exit то он будет вистеть как зомби. Родитель должен получить статус завершеного чаилда wait() после чего паспорт процесса чаилда будет убран из процессов.

Aleks_IZA
()

Вот у меня так и сделано: есть подпрограмма ->
void reaper(int sig){
int waitstatus;
while(waitpid(-1,&waitstatus,WNOHANG)>0);
}

А в ф-ции main я написал
signal(SIGCHLD,reaper);

anonymous
()

После обработки первого пришедшего сигнала у тебя обработчик установится в дефолтный, поэтому переустанавливай обработчик сигнала или используй sigaction

Happy New Year!

tvn
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.