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


 Stary wyjadacz :P
 Stary wyjadacz :P
	


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







 Palacz
 Palacz
	








Czy proces istnieje i i jego PID dowiesz się z wyniku polecenia
pgrep nazwa procesu
Offline



 Członek DUG
 Członek DUG
	




Ubic moze poleceniem:
pkill nazwa procesu
P.S. Do monitoringu procesow polecam htop.
Offline


 Stary wyjadacz :P
 Stary wyjadacz :P
	


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



 Członek DUG
 Członek DUG
	




Offline




 Moderator Mamut
 Moderator Mamut
	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

 Członek DUG
 Członek DUG
	

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