🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #13945

probleempje met 'child-locking'

#13945
From: Kristoff Bonne
Date: Thu, 10 May 2001 15:27
65 lines
3505 bytes
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).


- 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'.


Mogelijk oplossingen:
1/ De meest 'logisch' manier is dat het 'child'-process eerst een 'lock'
zet (ergens in een bestandje), maar gezien eigenschap 2 (soms voortijdig
sterven) wil ik vermijden dat er 'locks' blijven staan (die niet konden
gewist worden door het child-process wegens een 'plotse dood').

2/ Ik zoek dus iets dat een 'lock' aanmaakt, maar dat 'automatisch'
verdwijnt als het child-process verdwijnt; ook als (bv.) dat process
'afgemaakt' wordt door een 'kill -9'.

3/ Een andere mogelijkheid zou zijn dat 'mama' een lijst bijhoudt van
de 'pid's van haar children. De vraag is dan hoe 'mama' (de volgende
keer dat ze opgestart wordt) dat process nr. xxx effectief 'haar'
child is, en niet iets anders dat toevallig opgestart is onder dat pid?

4/ De enige manier die ik gevonden heb, is dat elk 'child'-process een
TCP-socket zou openen als 'lock'. (want een 'tcp-socket' verdwijnt
vanzelf als het process 'achter' die socket verdwijnt), maar dat lijkt
me allemaal wel serieus 'zwaar'.

Dus, zou het kunnen om iets 'lichters' daarvoor gebruiken (fifo's,
semaforen, ...).


Iemand enig idee?

Cheerio! Kr. Bonne.
Technical Details
Message-ID: <u0ced9.ih6.ln@frigg.belbone.net>
Path: arc1-ca.pugleaf.net!newsfeed.google.com!sn-xit-03!supernews.com!newsfeed.wirehub.nl!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed00.sul.t-online.de!t-online.de!skynet.be!louie!not-for-mail

Show Full Headers
Complete Article Headers
X-Google-Language: DUTCH,ASCII-7-bit
X-Google-Thread: fcea4,2f3cba8338648af7,start
X-Google-Attributes: gidfcea4,public
X-Google-ArrivalTime: 2001-05-10 08:28:14 PST
Path: arc1-ca.pugleaf.net!newsfeed.google.com!sn-xit-03!supernews.com!newsfeed.wirehub.nl!news.maxwell.syr.edu!newsfeed.icl.net!newsfeed00.sul.t-online.de!t-online.de!skynet.be!louie!not-for-mail
Sender:  <compaqnet@frigg.belbone.net>
From: Kristoff Bonne <kristoff.bonne@compaqnet.nospam.be>
Subject: probleempje met 'child-locking'
Newsgroups: be.comp.programming
Organization: I like chaos better! ;-)
User-Agent: tin/1.4.2-20000205 ("Possession") (UNIX) (Linux/2.2.15-4mdk (i686))
Date: Thu, 10 May 2001 17:27:26 +0200
Message-ID: <u0ced9.ih6.ln@frigg.belbone.net>
Lines: 65
NNTP-Posting-Host: 194.78.56.28
X-Trace: 989508451 reader1.news.skynet.be 43051 194.78.56.28
X-Complaints-To: abuse@skynet.be