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!

Ogłoszenie

Prosimy o pomoc dla małej Julki — przekaż 1% podatku na Fundacji Dzieciom zdazyć z Pomocą.
Więcej informacji na dug.net.pl/pomagamy/.

#1  2009-07-03 19:06:49

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Wykrywanie istniejącego procesu i jego zabicie

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

 

#2  2009-07-03 19:20:47

  ilin - Palacz

ilin
Palacz
Skąd: PRLu
Zarejestrowany: 2006-05-03

Re: Wykrywanie istniejącego procesu i jego zabicie

Czy proces istnieje i i jego PID dowiesz się z wyniku polecenia

Kod:

pgrep nazwa procesu

Problemy rozwiązujemy na forum nie na PW -> Niech inni na tym skorzystają.
Polski portal Debiana

Offline

 

#3  2009-07-03 19:58:06

  debianus_userus - Członek DUG

debianus_userus
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2005-08-29
Serwis

Re: Wykrywanie istniejącego procesu i jego zabicie

Ubic moze poleceniem:

Kod:

pkill nazwa procesu

P.S. Do monitoringu procesow polecam htop.

Offline

 

#4  2009-07-03 20:05:53

  szewczyk - Stary wyjadacz :P

szewczyk
Stary wyjadacz :P
Zarejestrowany: 2006-12-03

Re: Wykrywanie istniejącego procesu i jego zabicie

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

 

#5  2009-07-03 20:11:35

  debianus_userus - Członek DUG

debianus_userus
Członek DUG
Skąd: Warszawa
Zarejestrowany: 2005-08-29
Serwis

Re: Wykrywanie istniejącego procesu i jego zabicie

Offline

 

#6  2009-07-03 23:15:10

  bercik - Moderator Mamut

bercik
Moderator Mamut
Skąd: Warszawa
Zarejestrowany: 2006-09-23
Serwis

Re: Wykrywanie istniejącego procesu i jego zabicie

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()


"Wszyscy wiedzą, że czegoś zrobić nie można. Ale przypadkowo znajduje się jakiś nieuk, który tego nie wie. I on właśnie robi odkrycie." (A.Einstein)

Offline

 

#7  2009-07-04 11:01:59

  Robot_ - Członek DUG

Robot_
Członek DUG
Skąd: Zabrzeg
Zarejestrowany: 2006-07-04

Re: Wykrywanie istniejącego procesu i jego zabicie

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.


Nie dyskutuj z debilem. Najpierw sprowadzi Cię do swojego poziomu, a potem pokona doświadczeniem

Offline

 

Stopka forum

Powered by PunBB
© Copyright 2002–2005 Rickard Andersson
To nie jest tylko forum, to nasza mała ojczyzna ;-)