GNU/Linux >> Znalost Linux >  >> Linux

Jak nechat podřízený proces zemřít po odchodu rodiče?

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.


Linux
  1. Jak zabít proces, jehož rodič je init?

  2. Linux – jak učinit proces neviditelným pro ostatní uživatele?

  3. Jak funguje životní cyklus procesu Linux – nadřazený, podřízený a iniciační proces

  1. Jak získat návratovou hodnotu z CHILD PROCESS?

  2. Jak nastavím pracovní adresář nadřazeného procesu?

  3. Jak zabít podřízený proces po daném časovém limitu v Bash?

  1. Proč podřízený proces stále žije poté, co byl nadřazený proces v Linuxu zabit?

  2. Jak zabít zombie proces

  3. Jak získat podřízený proces z rodičovského procesu