SHRNUTI: signal detem po skonceni rodice

Ing. Pavel PaJaSoft Janousek janousek na fonet.cz
Středa Říjen 3 09:30:25 CEST 2001


	Slibil jsem, ze se dnes vratim k teto problematice... 

	Musim priznat, ze jsem za ty 4 roky, co jsem se teto problematice
nevenoval, opomnel jednu dulezitou vec - kazdy proces ma jako atributy
(mimo jine) PID, PPID, PGRP (procesova skupina ke ktere nalezi), to co
jsem popisoval vcera (tedy to zustani ve skupine, sireni signalu apod.)
se tyka PGRP a nikoli PPID, jak jsem se mylne domnival (a z cehoz
vychazela moje oponentura) a vcera jsem sloucil tyto dve polozky
dohromady a aplikoval na ne stejnou semantiku, je tomu skutecne tak, jak
shrnuji nyni:

1. Po ukonceni rodice se PPID deti nastavuje vzdy a jedine na 1 o kterem
se predpoklada ze je to INIT, existuji implementace UNIXu, ktere dokonce
pri ukonceni procesu kontroluji, zda-li jeho PID=1 a pokud ano, znovu
INIT automaticky zavadeji (takze metoda kontroly PPID <> 1 pro deti je
skutecne 100% spolehliva metoda jak zjistit, zda-li nam umrel rodic)
2. Po ukonceni rodice se PGRP deti nemeni, kazde dite se muze stat
process group leader (v BSD muze rici, jake bude mit PGRP, v System V je
PGRP = PID - volani setpgrp())
3. U daemonu je velice vhodne (a vesmes to vsechny delaji):
	a) aby ignorovaly nebo zpracovavali zakladni signaly (napr.
SIGCLD/SIGCHLD, jinak vznikaji matohy - do volani wait ci wait3), 
	b) aby se staly process group leaderem - nesiri se do nich signaly z
volaneho procesu (zpravidla shell)
	c) aby se odpojily (nezvratne) od ridiciho terminalu (dalsi atribut
kazdeho procesu)
	d) aby se zbavily vsech implicitne alokovanych systemovy zdroju, ktere
nepotrebuji (stdin, stdout, stderr atd.)

	Jak vidno, daemonizovani neni jen otazka jednoho forku, v architekture
SystemV se tohoto stavu dokonce ziskava dvojim forkovanim (daemon je az
dite z 2. generace), u BSD like systemu na c) existuje specialni IOCTL,
o dosazeni bodu b) jsem hovoril vyse (setpgrp() - System V, setpgrp(pid,
newpgrp) - BSD)., neexistuje standardizovane reseni - aspon mi neni
znamo...

	Toliko tedy vysvetleni a shrnuti, ma nekdo dalsi podnety k teto vysoce
systemove casti programovani (povazuji tuto problematiky za vyssi
programatorskou;-))

PS: Jako zdroj mych vedomosti mi slouzila kniha Programovani siti OS
UNIX od Stevensona (+ TextInfo dokumentace k LIBC verze (uz?) 5) - cesky
preklad Science 1996 (nesehnatelna, naklad 500 kusu), vedomosti
aplikovany a overovany pred 4-7 lety na architekturach IRIX, SCO UNIX
3.X, SUN OS 4.X a 5.X, UnixWare 1.X a 2.X, Linux 1.1.X - 1.3.X (X <
37?), FreeBSD (verzi nevim) - vyjma poslednich dvou se jedna spise o
architekturu SystemV  (semantika chovani) a Ultrix (naprosto specificke
chovani, ktere zde nepopisuji). Jsem si vedom, ze vyvoj jde dale a ze
nektere me vedomosti jsou poplatne dobe, tudiz nemusi byt aktualni,
doplni mi nekdo vzdelani?

-----------------------------------------------------------------------
Ing. Pavel Janousek (PaJaSoft)                 FoNet, spol. s r. o.
Vyvoj software, Intranet / Internet          Sokolova 67, 619 00 Brno
E-mail: mailto:Janousek na FoNet.Cz             Tel.: +420  5  4324 4749
SMS:    mailto:P.Janousek na SMS.Paegas.Cz      Fax.: +420  5  4324 4751
WWW:    http://WWW.FoNet.Cz/               E-mail: mailto:Info na FoNet.Cz
-----------------------------------------------------------------------


Další informace o konferenci Linux