Grzegorz Stanislawski wrote: [ciach]
- doklada spowrotem opcje -f (run in foreground" albo jak kto woli "don't fork"),
nie pomyślałem że to będzie potrzebne I dobrze, że ktoś się wreszcie zabrał za testy nowego demona. A oto co wymaga jeszcze dopracowania, czy też ustalenia (usunąłem fragmenty które nie budzą wątpliwości i zostaną uwzględnione)
- poprawia blad z forkowaniem "worker thread'a" czyli sprawia ze caly program zachowuje sie jak na daemona przystalo (m.in nie skacze po pidach i nie zostawia zombich)
hmm... coś mi nie chce to działać, mógłbyś jeszcze potestować i odnieść się do poniższych uwag/pytań?
+ } else if (fval==0) { //child +// //restore old handler so we can wait() for childs executed by modules +// sigaction (SIGCHLD,&orig, NULL) ;
to w końcu potrzebne to jest czy nie?
- if( quit ) - termination_handler(0); // write info to syslog - else - exit(0); +#ifdef DEBUG1 + syslog(LOG_INFO, "Reload child exiting..."); +#endif + + exit(0); + }else { //parent + sleep(100);
z tym sleep(100) to coś nie bardzo, próbowałeś go uruchamiać z opcją -q, albo bez -qf zrobiłem tak: // forking reload - we can do a job for longer than one minute int fval = fork(); if( fval < 0 ) { syslog(LOG_CRIT, "Fork error. Can't reload."); if ( quit ) termination_handler(1); } else if( fval==0 ) //child { setsid(); // załatwia sprawę wyświetlania czegokolwiek na // stdout, ale nie wiem czy to jest właściwe rozwiązanie (?) [...] // exit child (reload) thread if( quit ) termination_handler(0); // write info to syslog else exit(0); } else if( quit ) exit(0); [...] co ty na to? -- Aleksander 'A.L.E.C' Machniak http://alec.pl gg-2275252 Lan Management System Developer http://lms.alec.pl