Zpracovani signalu procesem

Michal Dobes dobes na tesnet.cz
Čtvrtek Září 19 11:10:48 CEST 2002


"Ing. Pavel PaJaSoft Janousek" wrote:
> > Tak jsem byl jeste prepaden myslenkou, ze nejrozumnejsi reseni je
> > prvne zakazat vsechny signaly, pak vyrobit vlakna (nastaveni signalove
> > masky se prevezme do dalsich vlaken) a vyrobit jedno vlakno navic,
> > co bude pres sigwait cekat na signaly a pak neco delat.
> 
>         Pokud nepouziji pthread_sig* apod., ale pouziji klasickou iniciaci
> handleru signal (...), nastaveni je platne _pouze_ pro vlakno, ktere
> tuto akci provede nebo pro cely proces? Ja mel za to, ze datova
> struktura je sdilena mezi vsechny vlakna, ne?

Ano. Pokud ve vicevlaknove uloze budete pouzivat normalni 
signal(sig, handler), tak jeho nastaveni plati pro vsechna vlakna
stejne. Pokud vice vlaken zmeni nejaky signal, tak plati posledni
provedene nastaveni ( = death in chaos is nice ... :-).
Kruta pravda je, ze vicevlaknova uloha a signaly moc dohromady
nejdou a pokud to jde, tak se jim vyhnout. Ono se tam se signaly
vnasi dost zmatenosti, treba uz jen to, ze nektere signaly
se muzou predat jakemukoliv vlaknu, co je zrovna po ruce, a nektere 
signaly se predavaji jen vlaknu, ktereho se to tyka (tusim FPE, TRAP,
SEGV, PIPE[?]) a buh vi, jake dalsi skarede prekvapeni se daji 
jeste potkat.

	Majkl


Další informace o konferenci Linux