Fork / Zombieproblematik

Vom einfachen Programm zum fertigen Debian-Paket, Fragen rund um Programmiersprachen, Scripting und Lizenzierung.
Antworten
melatonin
Beiträge: 40
Registriert: 14.09.2009 18:03:55

Fork / Zombieproblematik

Beitrag von melatonin » 12.09.2014 13:37:30

Hallo alle zusammen,

es gibt bei mir immer wieder bestimmte Aktionen (z. B. bestimmte Webseitenaufrufe) die im Hintergrund/Asychron bestimmte Aktionen ausführen sollen die eine höhere Laufzeit haben.
Grundsätzlich funktioniert dies mit einem fork.
Da aber der Elternprozess der ist, der die Ausgabe zurückliefert, wird dieser als Erster beendet.
Somit werden die Kinder immer zu Zombies. -> Ihr Status kann nicht abgefragt werden, da die Eltern bereits beendet wurden.

Ein Cronjob oder Service der diese Aktionen abarbeiten würde, würde unnötigen Verwaltungsaufwand erzeugen.

Gibt es dafür eine elegante Lösung?
Oder kann ich Zombies einfach ignorieren?

Vielen Dank und Grüße

cosmac
Beiträge: 4573
Registriert: 28.03.2005 22:24:30

Re: Fork / Zombieproblematik

Beitrag von cosmac » 12.09.2014 13:49:05

hi,

die Kinder könnten selbst noch einmal forken, z.B. einfach mit daemon(3). Dann sehen die Eltern rechtzeitig ein normales exit() und die Enkelkinder laufen als daemon weiter.

Es gibt auch Gerüchte, dass ein Zombie fast alles freigibt und dann kaum mehr als eine PID verbraucht. Wenn das stimmt und es nicht gerade Hunderte sind, könntest sie auch ignorieren.
Beware of programmers who carry screwdrivers.

melatonin
Beiträge: 40
Registriert: 14.09.2009 18:03:55

Re: Fork / Zombieproblematik

Beitrag von melatonin » 12.09.2014 14:02:14

Danke, daemon(3) kannte ich noch nicht.
Wenn aber alle PIDs durch Zombies belegt sind, würde dies doch zum Tod des Systems führen.

cosmac
Beiträge: 4573
Registriert: 28.03.2005 22:24:30

Re: Fork / Zombieproblematik

Beitrag von cosmac » 12.09.2014 15:07:00

ja, aber das wären über 32000 Stück, vorher sollte ein ulimit greifen. Außerdem müsste man die Strategie kennen, nach der init die Zombies endgültig tötet.
Beware of programmers who carry screwdrivers.

Antworten