Dítě může požádat jádro o doručení 08
(nebo jiný signál), když rodič zemře, zadáním volby 17
v 25
syscall takto:
39
Viz 47
pro podrobnosti.
Edit:Toto je pouze Linux
V minulosti jsem toho dosáhl spuštěním „původního“ kódu v „dítě“ a „spawnovaného“ kódu v „rodičovském“ (to znamená:po 55
). Poté uvězněte SIGCHLD ve „vyplozeném“ kódu...
Možná to ve vašem případě není možné, ale roztomilé, když to funguje.
Snažím se vyřešit stejný problém, a protože můj program musí běžet na OS X, řešení pouze pro Linux mi nefungovalo.
Došel jsem ke stejnému závěru jako ostatní lidé na této stránce – neexistuje způsob, který by byl kompatibilní s POSIXem, jak upozornit dítě, když rodič zemře. Tak jsem zabalil další nejlepší věc - dětskou anketu.
Když nadřazený proces zemře (z jakéhokoli důvodu), nadřazený proces dítěte se stane procesem 1. Pokud se podřízený pravidelně dotazuje, může zkontrolovat, zda jeho nadřazený je 1. Pokud ano, podřízený proces by měl skončit.
Není to skvělé, ale funguje to a je to jednodušší než řešení dotazování TCP socket/lockfile navrhovaná jinde na této stránce.