Archiv verlassen und diese Seite im Standarddesign anzeigen : Prozess (PID) prüfen
Hallo,
ich suche nach einer anderen bzw. direkten Möglichkeit
mit C zu überprüfen ob ein bestimmtes Programm, dessen PID ich kenne, noch läuft.
Momentan prüfe ich das per ´ps -A | grep PID| wc -1´
Ich würde das gern ohne externe System-Aufrufe machen. Hat jemand eine Idee? Möglicherweise
geht das mit waitpid ... allerdings bin ich da nicht
zu einem Ergebnis gekommen ...
Gruß Dirk
BlAcKdRaGoN
07.02.2002, 23:44
naja solange der prozess ne pidfile hat ist das ganz einfach du suchst dir die
pid datei raus und kannst dann nachsehen ob die datei noch exestiert ansonsten musst du meines wissens nach mit grep weiterarbeiten ;)
hier ein beispiel :
#include <iostream.h>
#define FILENAME "/var/run/gpm.pid"
int main(void)
{
if (FILENAME == NULL)
{
cout << "Der Prozess läuft nicht\n";
}
else
{
cout << "Der Prozess läuft noch\n";
}
}
hoffe mal das das hilft ansonsten probier ich noch n bsichen rum um zu sehn ob es auch anders geht als auf deine weise...
Original von BlAcKdRaGoN
naja solange der prozess ne pidfile hat ist das ganz einfach du suchst dir die
pid datei raus und kannst dann nachsehen ob die datei noch exestiert ansonsten musst du meines wissens nach mit grep weiterarbeiten ;)
hier ein beispiel :
#include <iostream.h>
#define FILENAME "/var/run/gpm.pid"
int main(void)
{
if (FILENAME == NULL)
{
cout << "Der Prozess läuft nicht\n";
}
else
{
cout << "Der Prozess läuft noch\n";
}
}
Ok, aber was passiert wenn das progi mit einem Seg.fault abschmiert. Dann liegt die PID noch im /var/run/ Verzeichnis aber nix geht mehr. Man muss also auf jeden Fall den Status der PID prüfen und das kann ich bisher nur mit ´ps´ ... das muss aber auch anders gehen ....
Ich hab zwar keine Ahnung von C aber bei Linux liegen doch die Sourcen bei und die sind in c.
Also guck Dir die Source von ps und co doch mal an dann siehst Du wie die Coder die PID ermitteln.
Heiko
vBulletin® v3.8.6, Copyright ©2000-2012, Jelsoft Enterprises Ltd.