Article View: be.comp.programming
Article #13954Re: probleempje met 'child-locking'
From: Koen Deforche
Date: Thu, 10 May 2001 18:54
Date: Thu, 10 May 2001 18:54
61 lines
3607 bytes
3607 bytes
Kristoff Bonne wrote:
>
> Gegroet,
>
> Misschien kan iemand me helpen met het volgende probleempje:
>
> Ik zou het volgende willen programeren.
>
> Alles begint met 'BB', het programma 'Big Brother' voor network- en
> device-monitoring tool (zie http://bb4.com/).
>
> Dit programma start een extern programma op; op door BB gekozen
> momenten (normaal ongeveer om de 5 minuten).
> Laten we dat process 'mama' noemen.
>
> Mama wordt geschreven door mij (liefst in perl), en die start (op haar
> beurt) een aantal 'children' op.
> Elk 'child' doet monitoring van een aan type devices, in een bepaald
> stuk van het network, en 'rapporteert' dit terug naar BB.
>
> Voor zover geen probleem, ware het niet dat de 'children' twee
> vervelende eigenschappen hebben.
> - Soms duren ze langer dan 300 seconden (de 'snelheid' waarmee BB mama
> opstart); en riskeert er dus een 'overlap' te gebeuren tussen twee
> maal hetzelfde 'child'-process die na elkaar opgestart worden.
>
> Aangezien sommige van die processen gebruik maken van gegevens uit de
> vorige 'poll-cyclus' (en dus met '.dbm'-bestanden zitten voor het
> bewaren van die informatie); wil ik hier problemen vermijden.
>
> - Soms gebeurd het wel eens dat een van die 'child' processen blijft
> hangen; of 'voortijdig' sterft. (meestal door netwerk-gerelateerde
> problemen)
processen die blijven hangen: dat kan je toch sowieso best fixen in
het child? een proces dat voortijdig sterft, dat kan je eenvoudig
opvangen (zie verder).
> - Bijkomend probleem is dat BB enkele 'mama' gaat opstarten indien
> die er NIET meer is. ('mama' mag dus niet een hele tijd actief blijven).
> Het moet iets zijn van 'opstarten en wegwezen'.
een process dat andere processen forkt, wordt op de hoogte gebracht
dat een kind dood gaat: dan krijgt het een SIGCHLD. In C kan je dan
de functie wait() oproepen om het pid te weten te komen van het
child dat is doodgegaan. Aangezien perl geen programmeertaal is
zal je dat wel niet kunnen, dus je kan maar beter eens C leren :)
Zodus, mama fork()'t haar kinderen, en wait() dan tot al
haar kinderen zijn gestorven, om zelf te exit()en. En zolang mama
nog runt, zal BB niks nieuws opstarten, wat uw probleem oplost?
Als je de children niet kan fixen (dat ze hangen), dan kan
mama misschien gewoon beslissen van een gerichte euthanasie
uit te voeren op haar kinderen na een bepaalde timeout? Dat
kan je eenvoudig programmeren met behulp van de alarm()
en signal() functies.
Een plezante oefening in C on UNIX!
koen.
Technical Details
Message-ID:
<3AFAE489.66274BE9@irule.be>Path:
arc1-ca.pugleaf.net!newsfeed.google.com!sn-xit-02!supernews.com!nntp-relay.ihug.net!ihug.co.nz!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!colt.net!zapata.tvd.be!news.tvd.be!news.chello.be!not-for-mailReferences:
<u0ced9.ih6.ln@frigg.belbone.net>Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit X-Google-Thread: fcea4,2f3cba8338648af7 X-Google-Attributes: gidfcea4,public X-Google-ArrivalTime: 2001-05-10 15:12:56 PST Path: arc1-ca.pugleaf.net!newsfeed.google.com!sn-xit-02!supernews.com!nntp-relay.ihug.net!ihug.co.nz!news-spur1.maxwell.syr.edu!news.maxwell.syr.edu!colt.net!zapata.tvd.be!news.tvd.be!news.chello.be!not-for-mail Message-ID: <3AFAE489.66274BE9@irule.be> From: Koen Deforche <kdf@irule.be> X-Mailer: Mozilla 4.74 [en] (X11; U; Linux 2.2.16 i686) X-Accept-Language: en MIME-Version: 1.0 Newsgroups: be.comp.programming Subject: Re: probleempje met 'child-locking' References: <u0ced9.ih6.ln@frigg.belbone.net> Content-Type: text/plain; charset=us-ascii Content-Transfer-Encoding: 7bit Lines: 61 Date: Thu, 10 May 2001 18:54:43 GMT NNTP-Posting-Host: 195.162.217.164 X-Complaints-To: abuse@chello.be X-Trace: news.chello.be 989520883 195.162.217.164 (Thu, 10 May 2001 20:54:43 MET DST) NNTP-Posting-Date: Thu, 10 May 2001 20:54:43 MET DST Organization: Chello Usenet Service