Hallo,
ich möchte auch einem Cocoa Programm heraus testen, ob ein bestimmter Prozess (ich kenne nur den Namen, nicht die PID) läuft. Ich habe dazu versucht, mit einer Pipe nach "ps x" in dessen Ausgabe nach dem Prozessnamen zu suchen (siehe Codefragment unten). Leider zeigt der besagte Code ein merkwürdiges Verhalten: wird er "ganz normal" mit dem gcc übersetzt funktioniert alles prima, füge ich den Code jedoch in ein Cocoa Projekt ein, dann werden immer nur 80 Zeichen von jeder Zeile des ps -Befehls gelesen. Kann sich/mir das jemand erklären? Gibt es vielleicht sogar eine bessere Möglichkeit um nach dem Vorhandensein eines Prozesses zu testen?
MfG
Michael
*******Der Code*******
bool isRunning() {
FILE *ps, *outf;
char buff[256];
if((ps=popen("/bin/ps x", "r")) == NULL) {
printf("Error\n");
pclose(ps);
return NO;
}
else
{
while(fgets(buff, 256, ps))
{
if(strstr(buff, "PROZESSNAME") != NULL)
{
pclose(ps);
return YES;
}
}
pclose(ps);
return NO;
}
}
ich möchte auch einem Cocoa Programm heraus testen, ob ein bestimmter Prozess (ich kenne nur den Namen, nicht die PID) läuft. Ich habe dazu versucht, mit einer Pipe nach "ps x" in dessen Ausgabe nach dem Prozessnamen zu suchen (siehe Codefragment unten). Leider zeigt der besagte Code ein merkwürdiges Verhalten: wird er "ganz normal" mit dem gcc übersetzt funktioniert alles prima, füge ich den Code jedoch in ein Cocoa Projekt ein, dann werden immer nur 80 Zeichen von jeder Zeile des ps -Befehls gelesen. Kann sich/mir das jemand erklären? Gibt es vielleicht sogar eine bessere Möglichkeit um nach dem Vorhandensein eines Prozesses zu testen?
MfG
Michael
*******Der Code*******
bool isRunning() {
FILE *ps, *outf;
char buff[256];
if((ps=popen("/bin/ps x", "r")) == NULL) {
printf("Error\n");
pclose(ps);
return NO;
}
else
{
while(fgets(buff, 256, ps))
{
if(strstr(buff, "PROZESSNAME") != NULL)
{
pclose(ps);
return YES;
}
}
pclose(ps);
return NO;
}
}