The OpenNET Project / Index page

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

Informix and zombies (informix zombie wrapper example database)


<< Предыдущая ИНДЕКС Поиск в статьях src Установить закладку Перейти на закладку Следующая >>
Ключевые слова: informix, zombie, wrapper, example, database,  (найти похожие документы)
_ RU.LINUX (2:5077/15.22) ___________________________________________ RU.LINUX _ From : nil 2:5015/46 23 Sep 98 00:02:26 Subj : Informix and zombies ________________________________________________________________________________ Hello ! По поводу Informix SE 7.22 for Linux : Остаются зомби. В comp.database.informix решили, что достаточно использовать следующий код. Запрускать нужно "nozombie $INFORMIXDIR/lib/sqlexecd [servicename]". /* nozombie.c */ #include <signal.h> #include <unistd.h> #include <stdio.h> int main(int argc, char **argv) { signal(SIGCHLD, SIG_IGN); execv(argv[1], &argv[1]); fprintf(stderr, "Failed to execv() %s\n", argv[1]); return 1; } Что же реально за проблемма такая в Informix SE ? TCP/IP соединение принимает sqlexecd, который авторизирует пользователя и если успешно, то делает pipe, fork, setuid(user) и соединяет сокеты к пайпам sqlexec (который, видимо, делает getuid, а потом getpwuid тем самым он понимает что за юзер залогинен). Сразу видно что Informix больше дружит с юниксом нежели его собрат Interbase :) Для отслеживания процесса-ребенка была использована функция signal(SIGCHLD, ...), когда погибает ребенок (sqlexec) ядро посылает процессу sqlexecd сигнал SIGCHLD и тот его обрабатывает. К сожалению, они забыли, что после обработки сигнала нужно опять его выставить, а тут получилось что он в default ставиться. Вот почему первый раз, когда вы коннектитесь к informix у вас _не_образуется_ зомби (сигнал корректно обрабатывается), на второй уже появляется зомби. Если сделать kill sqlexecd, то естественно, что все зомби пропадают, но это imho не выход из положения. :( Вышеописанный сюшный сорц не помогает в данном случае, т.к. Linux не слышал про работу с SIGCHLD как это реализовано в SVR4. Best regards, Nil. E-mail: nil@inforis.ru, FIDO: 2:5015/46 --- ifmail v.2.14.os * Origin: Savage Station (2:5015/46@fidonet)

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

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




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

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