Sto lavorando a un programma che utilizza la memoria condivisa. Più istanze di tale programma si collegheranno a una esistente o la creeranno di nuovo e la restituiranno al sistema operativo quando non ci sono altri processi o semplicemente la scollegano e terminano. Ho pensato di usare un semplice contatore per tenere traccia di quanti processi lo usano.Come eseguire una pulizia dopo SIGKILL?
Sto utilizzando la funzione atexit()
per eseguire la pulizia, tuttavia, dopo aver ricevuto il segnale SIGKILL, i processi non eseguono alcuna operazione di pulizia, quindi se uno di questi processi non termina normalmente, potrei non essere mai in grado di pulisci la memoria.
C'è un modo per specificare cosa fare anche dopo un segnale SIGKILL? Probabilmente scriverò un meccanismo simile a un timer per verificare se i processi sono ancora vivi, ma mi piacerebbe davvero evitarlo se c'è un altro modo.
+1 per spiegare un concetto – Robert