Rückgabewert von Funktion system() weiterverarbeiten
-
Hallo C++Community,
ich möchte mich in C/C++ einarbeiten, und habe folgendes Problem:
Ich möchte gerne einen ping in einer Schleife laufen lassen,
wenn dieser nicht ordnungsmäß abgeschlossen wurde dann soll
die Schleife verlassen werden.Wie kann ich den Rückgabewert nun weiterverarbeiten, wenn
der SYSTEM-Befehl mit einem String übergeben wurde.Vielen Dank
Jochen
Ich habe nun folgendes geschrieben:
#include <stdio.h> #include <string.h> int main() { int systemecho=1; char host[100]={"192.168.100.1"}; //Host bzw. IP-Adresse char syscmd[20]={"ping -c 2"}; //Basisbefehl strcat(syscmd, " "); //Leerzeichen zum String "SYSCMD" hinzufügen strcat(syscmd, host); //Strings zusammenfügen strcat(syscmd, " &>/dev/null"); // dev/null hinzufügen //system(syscmd); while(systemecho == 0) { system(syscmd,systemecho); sleep(60); } printf("ENDE\n"); return 0; }
-
Erstens: system() hat nur einen Parameter - und wie man den Rückgabewert einer Funktion entgegennimmt, gehört eigentlich zu den C-Grundkenntnissen:
systemecho=system(syscmd);
Zweitens: Bist du sicher, daß das Array 'syscmd' groß genug ist für das komplette Kommando? Wenn ich mich nicht verzählt habe, benötigst du mindestens 38 Zeichen Platz (inklusive \0).
-
Hallo CStoll,
ich danke Dir das (systemecho=system(syscmd); ) hab ich total übersehen.
Das mit Array hast auch recht, ist untergegangen .......aber jeder Anfang ist schwer ...
Vielen Dank
Jochen
-
Nur um vollständig zu sein den richtigen und funktionierenden Quelltext:
#include <stdio.h> #include <string.h> int main() { int systemecho=0; char host[100]={"192.168.100.1"}; //Host bzw. IP-Adresse char syscmd[50]={"ping -c 2"}; //Basisbefehl strcat(syscmd, " "); //Leerzeichen zum String "SYSCMD" hinzufügen strcat(syscmd, host); //Strings zusammenfügen strcat(syscmd, " &>/dev/null"); // dev/null hinzufügen while(systemecho == 0) { systemecho=system(syscmd); //printf("Rueckgabewert: %d\n",systemecho); sleep(3); } printf("ENDE\n"); return 0; }
...und es wird mit Sicherheit auch noch andere Lösungen geben ....
Danke nochmals ...
-
JST schrieb:
...und es wird mit Sicherheit auch noch andere Lösungen geben ....
Ja, etwa ein Dutzend systemspezifische Funktionen, die technisch das selbe leisten wie system(), aber teilweise etwas besser konfiguriert werden können (z.B. popen(), exec() oder CreateProcess()).