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?
uczestnicy (1)
-
A.L.E.C