Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Dziwne działanie funkcji exec()
szwarek
post 22.10.2007, 10:38:46
Post #1





Grupa: Zarejestrowani
Postów: 1
Pomógł: 0
Dołączył: 22.10.2007

Ostrzeżenie: (0%)
-----


Witam wszystkich forumowiczów. Nurtuje mnie ostatnio jeden problem, na który nie mogę znaleźć odpowiedzi.

Ogólnie muszę zrobić funkcję zliczającą ile jest uruchomionych procesów z daną nazwą. W Linuxie robię to zawsze tak:
Kod
pgrep -f "nazwa procesu" | wc -l

No i otrzymuję odpowiednio 0 jeśli taki proces w ogóle nie jest uruchomiony, 1 jeśli jest tylko 1 itd...

Teraz jeśli w php zrobię analogicznie:
  1. <? echo exec("pgrep -f \"$nazwa_procesu\" | wc -l"); ?>

to otrzymuję wartości o 1 większe. Czyli jeśli proces nie jest uruchomiony to zwraca mi 1, jeśli jest 1 to zwraca mi 2 itd... Może mi ktoś wytłumaczyć dlaczego tak się dzieje? Testowałem to już na 2 różnych Linuxach, jeden z PHP 5.2.2 drugi 5.2.4. Uruchamiałem polecenie pgrep jako użytkownik apache w shellu i cały czas to samo. Z basha zawsze wartości o 1 mniejsze. Po zmianie funkcji exec() na shell_exec() cały czas jest to samo niestety.

Znalazłem rozwiązanie. Może akurat się komuś przyda.
Otóż polecenie pgrep wołane z poziomu php działa trochę błędnie ponieważ znajduje też samą siebie. Aby tego uniknąć wystarczy trochę zmienić parametry wołania polecenia.
Prawidłowo powinno wyglądać to tak:
  1. <? echo exec("pgrep -f \"$nazwa_procesu\" -c"); ?>
Go to the top of the page
+Quote Post

Reply to this topicStart new topic
1 Użytkowników czyta ten temat (1 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Wersja Lo-Fi Aktualny czas: 28.06.2025 - 07:37