The OpenNET Project / Index page

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

[FreeBSD] работающий ipa.conf IP Accounting Daemon (IPA) (freebsd ipfw traffic)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: freebsd, ipfw, traffic,  (найти похожие документы)
From: void <redsa@ukrpost.net> Newsgroups: openforum Orig: http://www.opennet.ru/openforum/vsluhforumID9/1365.html Subject: [FreeBSD] работающий ipa.conf IP Accounting Daemon (IPA) Тема: "while (waitpid (-1, &status1, WNOHANG)>0) и всеравно зомби" Отправлено: void <redsa@ukrpost.net>, 06-Фев-03 19:17 Народ помогите я с сокетами и демонами вот только столкнулся и сразу грабли Остаются зомби процессы - вроде все по доке клеил но нифига waitpid не отлавливает int main () { int serv_s,one = 1; struct sockaddr_in sin, cin; int cin_size = sizeof(cin); int sock, status1, child; daemon(0,0); serv_s = socket(PF_INET,SOCK_STREAM,0); . . . while ((sock = accept(serv_s,(struct sockaddr *)&cin, &cin_size)) >= 0) { . . . child = fork(); if (child == -1) panic("Can't fork"); if (child == 0) { log_put("connect.log", "MAIN", "PID %d",getpid()); if((one=proceed_connection(sock))<0) log_put("connect.log", "MAIN", "Terminated abnormally"); exit(0); } while ( (my_pid = waitpid (-1, &status1, WNOHANG))>0); close(sock); } panic("accept failed !!!"); return 0; } Почему остаются зомби? Я понимаю что у меня ошибка на уровне DNK:)
From: romanSA , 07-Фев-03 10:12 А что за ошибку возвращает waitpid()? И почему не хочешь сделать обработку смерти child-ов через перехват сигнала SIGCHLD? IMHO, это самый правильный способ. P.S. Тут на форуме недавно поднимали этот вопрос.
From: void , 07-Фев-03 10:12 Спасибо:)! Все заработало зомбей нет:)! Да я видел этот топик в форуме на который ты ссылался но я не разобрался в нем( видать сказалась 20 часовая борьба с этим) А ларчик просто открывался ( поясняю мне нужно было при !!!любом!!! исходе child'a валить его) void fsignal(int sig) { exit(0); } int main () { int serv_s,one = 1; struct sockaddr_in sin, cin; int cin_size = sizeof(cin); int sock, status1, child,j; daemon(0,0); serv_s = socket(PF_INET,SOCK_STREAM,0); setsockopt(serv_s,SOL_SOCKET,SO_REUSEADDR,&one,sizeof(one)); . . . while ((sock = accept(serv_s,(struct sockaddr *)&cin, &cin_size))>= 0) { . . . for(j=1; j<32; j++) signal(j,fsignal); child = fork(); if (child == -1) panic("Can't fork"); else if (child == 0) { if((one=proceed_connection(sock))<0) log_put("connect.log", "MAIN", "Terminated abnormally"); return 0; } else { while ( waitpid (-1, &status1, WNOHANG)>0); } . .

<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>

 Добавить комментарий
Имя:
E-Mail:
Заголовок:
Текст:




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

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