Hallo Tom,
Der Prozess bekommt das SIGKILL eh nicht zu gesicht.
Das habe ich doch gesagt.
Ja, aber da standen noch genügend falsche Setze drum herum.
kill() ist eine Systemfunktion unter UNIX, die 2 Parameter erwartet: Die Prozess-ID und die Signal-Nummer. Diese Systemfunktion wird vom Kernel ausgeführt. Wenn der Kernel ein SIGKILL sieht, dann wird der Prozess ganz einfach restlos entfernt, der Prozess bekommt SIGKILL gar nicht zu Gesicht. Nur die Taskstruktur bleibt erhalten, bis der Parent-Prozess wait() oder waitpid() aufruft, um den Exit-Status des Prozesses zu erhalten.
Hier ging es aber auch um das gezielte "herunterfahren" eines Prozesses.
Du hast doch kill -9 ins Spiel gebracht.
Also wie kann man (natürlich nicht mit einem (-9), den Prozess gezielt herunterfahren, und wie muss er gebaut sein, damit er das auch mit sich machen lässt?
Du schickst dem Prozess SIGTERM. Der Prozess selbst hat einen Signalhandler für SIGTERM (und evtl. auch SIGINT, falls es ein Vordergrundprozess ist, der durch Ctrl+C abgebrochen werden könnte) eingerichtet und dieser führt dann die ganzen Cleanup-Arbeiten durch. Alternativ könnte der Signalhandler auch exit() aufrufen, damit die ganzen Routinen aufgerufen werden, die per atexit() registriert wurden (falls Du sowas machst). Wenn Du SIGTERM jedoch nicht abfängst und im Signalhandler exit aufrufst, sondern den Prozess durch die Default-Aktion des Signals beenden lässt, werden die atexit()-Funktionen *nicht* aufgerufen.
Was bitteschön soll ein Gatekeeper sein?
Das ist der Prozess, dem das Gate gehört.
Und was soll denn ein Gate [1] bitteschön sein? Selbst wenn es sowas unter andern Betriebsystemen gibt - in POSIX.1 gibt's sowas jedenfalls definitiv nicht.
Der darf entscheiden, was der abgespaltene Prozess (Child) durch dieses Gate tun darf.
Eine Kontrolle über andere Prozesse ist unter POSIX.1 in dieser Form, wie Du beschreibst, nicht möglich. Ich weiß nicht, woher Du das hast, aber es gibt sowas unter POSIX.1 definitiv nicht.
Viele Grüße,
Christian
[1] Und komme mir bitte nicht mit Hardware-Gates - damit haben Prozesse unter POSIX.1 genau so viel zu tun, wie Quarz mit Schokoriegeln - nämlich gar nichts.
"I have always wished for my computer to be as easy to use as my telephone; my wish has come true because I can no longer figure out how to use my telephone." - Bjarne Stroustrup