Пишу прогу на C (Xlib), и в начале создаю GC вызовом XCreateGC(), но мне нужно потом вызвать XFreeGC(), причем это сделать перед завершение работы программы. Допустим, при нормальном завершении работы программы, я могу это сделать с помощю XEvent, а если я сделаю kill прога? Ведь при этом XFreeGC не вызовется, а это как я понимаю не есть хорошо. Та же история я malloc/free.
Есть ли способ ловить попытку выключения проги(от любого источника) и корректно завершить работу?