Nie jesteś zalogowany.
Jeśli nie posiadasz konta, zarejestruj je już teraz! Pozwoli Ci ono w pełni korzystać z naszego serwisu. Spamerom dziękujemy!
Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.
Strony: 1
Witam
zaczynam zabawe z C , i pisze małą aplikacje i pojawia mi sie problem poniewarz nie chce aby aplikacja miała jednoczesnie kilka procesów . W jaki sposób sprawdzic czy proces istnieje znając jego nazwe oraz jak z pociomu C spowodowac jego kill ale chyba będe potrzebował PID procesu ?
Offline
Czy proces istnieje i i jego PID dowiesz się z wyniku polecenia
pgrep nazwa procesu
Offline
Ubic moze poleceniem:
pkill nazwa procesu
P.S. Do monitoringu procesow polecam htop.
Offline
tak wiem ,ale chciałbym aby program informował o tym że proces istnieje i nie uruchamiał sie zatem chce to wykonać już w programie
Offline
Offline
zawsze mozesz sie posuluzyc pgrep'em itp wywolanym w system ()lub fork/exec ... funkcji bibliotecznej chyba nie ma (programy takie jak ps parsuja po prostu system /proc ...)
natomiast kontrole ze program dziala najczesciej sie robi w oparciu o jakies pliki lockow, lacza nazwane itp ... mozesz tez uzyc jakiegos semafora ...
co do killowania to masz funkcje dowysylania sygnalow - kill()
Offline
Używanie funkcji system() jest dość ryzykowne, szczególnie jak używasz aplikacji wielowątkowej.
Jeśli chcesz mieć tylko jeden proces to możesz parsować /proc co jest dość długie i nie efektywne.
Zobacz jak robią to wszystkie programy, tworzysz pusty plik i sprawdzasz czy istnieje jeśli tak kończysz aplikacje jeśli nie tworzysz go.
W taki przypadku możesz mieć tylko jeden proces. Tylko musisz pamiętać aby przy zakończeniu programu plik usunąć.
Jeśli tego nie zrobisz będziesz musiał wywalić go ręcznie.
Offline
Strony: 1