Cześć.
Napisałem program w C. Jest to prosty programik odczytujący stan baterii i rysujący pasek z wizualizacją ile pozostało energi w lapsie. Program działa pod systemem linux, został napisany w C. Żeby było lekko i prosto nie używam gtk czy qt tylko czystego xlib z X11. Same rysowanie paska, odczyt energi czy reakcje na zmniejszenie pojemności już mam. Problem polega na zamknięciu programu. Całość jest umieszczona w nieskończonej pętli, więc nigdy sie nie kończy. Nie jest to problemem bo mogę zrobić kill na procesie i program się zabija. O ile przy wyłączaniu laptopa jest ok, to czasami jak zabijam go podczas pracy laptopa mam obawy o pamięć. Teoretycznie nie czysczę pamięci po oknie, ekranie, ort! etc. Nie wiem co sie dzieje z pamięcią po skillowaniu procesu - linux ja "odzyskuje", czy powoduje to wyciek i już nigdy ta pamieć nie zostanie użyta ?? Jak w takim programie zrobić coś w rodzaju destruktora ?? Teoretycznie może to byc funckja sprzątająca, ale, jak mogę się zorientować, że ktoś chce mnie skillować skoro w nieskończonej pętli odczytuje baterie i rysuję ?? Próbowałem z XEventami, jednak odczyt xeventów ort! mi program aż nie nadszedł sygnał, a ja chce w tym czasie odczytywać stan baterii. Pierwszy pomysł to zrobić to na ptreads - jeden wątek do odczytu ort!, jednen do rysowania i jeden do odczytywania eventów. Jak pójdzie event zamknij to wtedy oznaczam, żeby wątki sie zakończyły, sprzątam i wyłączam - co sądzicie ?? Da sie to zrobić prościej bez ptreads ??
Dalej, jeżeli mam proces np. icewm, który uruchamia mój program to killowania icewm, spowoduje skillowanie mojego programu - jaki event zostanie przesłany do mojego programu przez icewm czy wszystko pójdzie z czapy i nici ze sprzątaniem pamięci ??
Dzięki za pomoc !