Pracuję nad programem, który korzysta z pamięci współdzielonej. Wiele instancji wspomnianego programu łączy się z istniejącym lub tworzy go od nowa, a następnie przekazuje systemowi operacyjnemu, gdy nie ma innych procesów lub po prostu się go odłącza i kończy. Myślałem o używaniu prostego licznika do śledzenia, ile procesów go używa.Jak wykonać czyszczenie po SIGKILL?
Używam funkcji atexit()
do czyszczenia, jednak, afaik, po odebraniu sygnału SIGKILL, procesy nie wykonają żadnego czyszczenia, więc jeśli któryś z tych procesów nie zakończy się normalnie, być może nigdy nie będę w stanie wyczyść pamięć.
Czy istnieje sposób określenia, co należy zrobić, nawet po sygnale SIGKILL? Prawdopodobnie zamierzam napisać jakiś mechanizm podobny do timera, aby sprawdzić, czy procesy wciąż są żywe, ale naprawdę chciałbym tego uniknąć, jeśli jest inny sposób.
+1 za wyjaśnienie koncepcji – Robert