Cum de a opri un demon
Nu este nici un semnal TIPI pe care le trimiteți și că nu înțelegi cum funcționează.
Iată ce scrie:
Ie Programul dvs. este finalizat și când pid<0 и тогда, когда pid>0. rămâne doar o singură valoare - zero. Dar acest lucru înseamnă că suntem în procesul de copil! Ca rezultat, echipa
Acesta trimite un semnal la procesul cu == BIP 0. Aceasta este vorbești. În cazul în care copilul dumneavoastră vrea să facă procesul harikiri, aceasta se face cu ajutorul exit (0);
Dacă vrei să omori un copil al unui părinte, este necesar să se trimită un semnal de la filiala în care pid> 0. Un semnal poate fi, de asemenea, cel puțin, SIGINT. Este același lucru o sută de presă Ctrl / C
Există o singură cale de a ucide procesul - să-l trimită un semnal care nu poate fi procesată. Procedeul (orice) nu poate procesa semnalul dacă nu este făcută de procesorul de semnal sau semnalul nu este procesat în prinyipe (-9).
Pentru că ar trimite un semnal la proces, trebuie să știi PID. Și aici sunt două opțiuni: 1) știți că BIP ei pentru că ei înșiși a creat cu ajutorul furcii chirurgie. 2) Procesul - corect scris un demon și a pus în mod onest directorul / var / rula propriul BIP-fișier, care este înregistrată și pid acesteia. În acest caz, numele fișierului trebuie să se potrivească cu numele unui demon care rulează, și este ușor de înțeles.
Astfel, procesul de copil trebuie să înregistreze BIP în BIP-fișierul în directorul / ar / termen. Și procesul pe care îl ucide - ar trebui să citească acest fișier, luați-l și cauza ucide BIP () cu acest pid-lea.
Să începem cu faptul că nu înțeleg esența proceselor. Dacă executați din nou programul, acesta a generat un proces cu totul nou, și, desigur, finalizarea de ieșire va determina exact noul proces, nu cel pe care se execută ca un demon. De obicei, în programele care acceptă daemon se face după cum urmează: proces PID-daemon este stocat undeva într-un loc public (/ var / run, / tmp), iar procesul este pornit cu parametrul --stop corectează procesul PID-daemon, și mărci l omoare cu acea valoare PID.
SIGCONT nu poate ajuta în acest caz, deoarece semnalul continuă să execute procesul sa oprit, iar în cazul în care procesul este deja în execuție, acest semnal este ignorat.