Tradycyjny, przenośny, powszechnie używany sposób polega na tym, że proces nadrzędny czuwa nad swoimi dziećmi.
Podstawowymi operacjami podstawowymi są wywołania systemowe wait
iwaitpid
. Kiedy proces potomny umiera, proces macierzysty otrzymuje SIGCHLD
sygnał informujący, że powinien zadzwonić, wait
aby dowiedzieć się, które dziecko zmarło i status wyjścia. Proces nadrzędny może zamiast tego wybrać ignorowanie SIGCHLD
i wywoływanie waitpid(-1, &status, WNOHANG)
według własnego uznania.
Aby monitorować wiele procesów, albo odradzasz je wszystkie od tego samego rodzica, albo wywołujesz je wszystkie poprzez prosty proces monitorowania, który po prostu wywołuje pożądany program, czeka na jego zakończenie i informuje o zakończeniu (w składni powłoki:) myprogram; echo myprogram $? >>/var/run/monitor-collector-pipe
. Jeśli pochodzisz ze świata Windows, zauważ, że posiadanie małych programów wykonujących jedno wyspecjalizowane zadanie jest powszechnym projektem w świecie Unix, system operacyjny jest zaprojektowany tak, aby procesy były tanie.
Istnieje wiele programów do monitorowania procesów (zwanych również nadzorcami), które mogą raportować, kiedy proces umiera i opcjonalnie go restartować, a także wiele więcej: Monitorowanie , Nadzór , Upstart ,…