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
Fork / Zombieproblematik
Re: Fork / Zombieproblematik
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.
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.
Re: Fork / Zombieproblematik
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.
Wenn aber alle PIDs durch Zombies belegt sind, würde dies doch zum Tod des Systems führen.
Re: Fork / Zombieproblematik
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.