unter Linux herausfinden ob ein prozess noch läuft mit C++

tschockmel

Grünschnabel
Hallo

habe ein problem, ich bin dabei ein kleines script zu schreiben um herauszufinden ob ein prozess noch läuft oder nicht, jedoch wird es nix, komme nicht weiter...

würde mich freuen wenn ihr mir weiterhelften könntet!

hier mal mein aktuelles skript:

#include<iostream>

using namespace std;

string check;

int main()
{
check = system("ps -C wfica -o comm=");

if(check=="wfica")
{
cout << "ICACLIENT OK";
main();
}

else
{
cout << "ICACLIENT as down!";
}

}

wfica => Prozessname

MfG Tom
 
Hallo,

habe ein problem, ich bin dabei ein kleines script zu schreiben um herauszufinden ob ein prozess noch läuft oder nicht, jedoch wird es nix, komme nicht weiter...
C++ ist keine Skriptsprache.

check = system("ps -C wfica -o comm=");
Die Standardfunktion system gibt keinen std::string, sondern einen int zurück, entsprechend dem Rückgabewert des aufgerufenen Programms.

if(check=="wfica")
{
cout << "ICACLIENT OK";
main();
}
Du rufst hier deine main-Funktion rekursiv auf. Bist du dir sicher, dass du das willst?

Ganz abgesehen davon: wieso meinst du, das mit C++ umsetzen zu müssen? Eine Skriptsprache wie bash wäre hier vielleicht geeigneter.

Grüße,
Matthias
 
Ich würde das auch eher per Skript regeln und wenn es C/C++ sein muss sollte POSIX dafür einen Systemaufruf haben glaube ich.
 
k werd ich mir anschauen, könnte mir nur jemand verraten wie ich das "ergebnis" von "ps -C wfica -o comm=" in eine variable speichern kann?

dann wäre das problem schon zu 98% gelöst ;)
 
Hi.

Jetzt in C/C++ oder Bash?

In C/C++ müßtest du eine Pipe zum lesen öffnen (mit popen) und dann von der Pipe lesen und die gelesenen Zeichen halt in einer Variable speichern.

In Bash:
Bash:
psres=$( ps -C wfica -o comm= )

Gruß
 
Zurück