Ich arbeite an einem Programm, das gemeinsam genutzten Speicher verwendet. Mehrere Instanzen dieses Programms verbinden sich entweder mit einem vorhandenen oder erstellen es neu und geben es an OS zurück, wenn keine anderen Prozesse vorhanden sind, oder trennen es einfach und beenden es. Ich dachte an einen einfachen Zähler, um zu verfolgen, wie viele Prozesse ihn benutzen.Wie mache ich eine Säuberung nach SIGKILL?
Ich benutze atexit()
Funktion, um die Aufräumarbeiten zu tun, jedoch afaik, nach dem Empfang von SIGKILL-Signal, Prozesse werden keine Aufräumarbeiten, so dass, wenn einige dieser Prozesse nicht normal beenden, könnte ich nie in der Lage sein säubere den Speicher.
Gibt es eine Möglichkeit, festzulegen, was auch nach einem SIGKILL-Signal zu tun ist? Ich werde wahrscheinlich einen Mechanismus schreiben, der einem Timer ähnlich ist, um zu überprüfen, ob Prozesse noch am Leben sind, aber ich würde es wirklich gerne vermeiden, wenn es einen anderen Weg gäbe.
+1 für die Erläuterung eines Konzepts – Robert