|
|
ru.unix- RU.UNIX ---------------------------------------------------------------------- From : Mikhail V. Majorov 2:5020/400 28 Dec 2000 12:31:36 To : All Subject : fork и зомби --------------------------------------------------------------------------------
Добрый день.
Я пишу софт. Подскажите как мне избавлятся от собственных зомби.
Привожу пример основного цикла ожидания входящих коннектов....
Код возврата потомков меня совсем не интересует и хотелось бы не
напрягаясь отказатся от
хранения в таблице процессов этой информации не дожидаясь wait.
Hу или как мне упростить решение этой проблемы...
for(;;) {
FD_ZERO(&select_set);
FD_SET(s, &select_set);
// wait for client
if ((select(FD_SETSIZE, &select_set, 0, 0, &timeout) > 0)
&& FD_ISSET(s, &select_set)) {
if ((nsid = accept(s, &rsock, &rsock_len)) == -1 ) {
syslog(LOG_NOTICE, "dummy connection: %m");
continue;
}
if (flag_fork) pid = fork() else pid = -2;
switch (pid) {
case 0: // children
close(s);
case -2: // without fork
if (conn_allow((struct sockaddr_in *)&rsock)) talk_client(nsid);
close(nsid);
if (pid == 0) exit(0);
break;
case -1: // fork error
syslog(LOG_ERR, "fork: %m");
default: // parent
close(nsid);
}
}
}
--
С уважением, Михаил.
--- ifmail v.2.15dev5
* Origin: Taganrog electrocommunication node (2:5020/400)
Вернуться к списку тем, сортированных по: возрастание даты уменьшение даты тема автор
Архивное /ru.unix/1515d83b7730.html, оценка из 5, голосов 10
|