🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: be.comp.programming
Article #13957

Re: probleempje met 'child-locking'

#13957
From: Kristoff Bonne
Date: Fri, 11 May 2001 08:01
55 lines
3371 bytes
Gegroet,

Koen Deforche <kdf@irule.be> wrote:
>> - 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).
Inderdaad; maar soms worden die gewoon 'afgeknald' met een 'kill -9',
en dan zitten we in de 'voortijdige dood' situatie.


>> - 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 :)
Perl kan toch redelijk veel qua IPC hoor; en het grootste deel van het
programma is reeds geschreven.
(Er zitten stukken in die interfacen naar 'telnet', naar SNMP, naar
Postgressql en .dbm bestanden en daarvoor is perl wel stukken
interessanter).


> 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?
Probleem is dat mama verschillende programma's opstart; sommige
die heel kost duren (een minuutje); sommige veel langer (afhankelijk
van het aantal nodes die moet gepolled worden, time-out's van nodes
die niet antwoorden, enz.).
Dan zou de 'cycle' van ALLE kinderen gelijk zijn aan die van de
TRAAGSTE; en -aangezien het de bedoeling is van een netwerk
monitoring-tool om zo SNEL mogelijk- problemen te melden wil ik dit
niet.

Nu, een oplossing zou zijn (verder gaande op jou idee) is gewoon
'mama' te implementeren als een 'daemon'-process en die (vanuit BB)
gewoon een signal 'USR1' te sturen naar haar.


> 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.
Yep. Dat was ik van plan.

Cheerio! Kr. Bonne.
Technical Details
Message-ID: <l86gd9.m38.ln@frigg.belbone.net>
Path: arc1-ca.pugleaf.net!archiver1.sj.google.com!newsfeed.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!dispose.news.demon.net!demon!skynet.be!louie!not-for-mail
References: <u0ced9.ih6.ln@frigg.belbone.net> <3AFAE489.66274BE9@irule.be>

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-11 01:10:05 PST
Path: arc1-ca.pugleaf.net!archiver1.sj.google.com!newsfeed.google.com!sn-xit-03!supernews.com!logbridge.uoregon.edu!dispose.news.demon.net!demon!skynet.be!louie!not-for-mail
Sender:  <compaqnet@frigg.belbone.net>
From: Kristoff Bonne <kristoff.bonne@compaqnet.nospam.be>
Subject: Re: probleempje met 'child-locking'
Newsgroups: be.comp.programming
References: <u0ced9.ih6.ln@frigg.belbone.net> <3AFAE489.66274BE9@irule.be>
Organization: I like chaos better! ;-)
User-Agent: tin/1.4.2-20000205 ("Possession") (UNIX) (Linux/2.2.15-4mdk (i686))
Date: Fri, 11 May 2001 10:01:25 +0200
Message-ID: <l86gd9.m38.ln@frigg.belbone.net>
Lines: 55
NNTP-Posting-Host: 195.13.17.30
X-Trace: 989568306 reader1.news.skynet.be 43046 195.13.17.30
X-Complaints-To: abuse@skynet.be