Rückgabe von system()

muehle

Grünschnabel
Hallo

Ich wusste nicht genau wie ich den Titel dieser Frage schreiben sollte, also:

Mit dem Befehl "system()" kann man ja Befehle an den Komandointerpreter des Betriebsystems übergeben...
Nun starte ich dadurch ein anderes Programm, was mir Informationen auf dem Bildschirm ausgibt. Wie kann ich diese Informationen verarbeiten?

Beispiel:
system("netcat -w 2 pop.gmx.de 110")
Zeigt auf Bildschirm an: "+OK GMX POP3 StreamProxy ready ..."

Wie bekomme ich das was auf dem Bildschirm angezeigt wird in eine Variable, die ich weiterverarbeiten kann?

gruß
muehle
 
Return Value

If command is NULL and the command interpreter is found, the function returns a nonzero value. If the command interpreter is not found, it returns 0 and sets errno to ENOENT. If command is not NULL, system returns the value that is returned by the command interpreter. It returns the value 0 only if the command interpreter returns the value 0. A return value of – 1 indicates an error, and errno is set to one of the following values:
[...]
So, wie es aussieht, kannst du direkt nur Fehlercodes bekommen. Wenn du ein Programm schreibst, gibt main() ja auch nur ints zurück.
Falls du auf den Bildschirmspeicher der Konsole zugreifen willst - vielleicht geht es mit GetConsoleScreenBufferInfo() usw. Habe es allerdings selbst noch nie probiert.
 
Hi!

genau, die die funktion "system" gibt nur zurück ob der Befehl ausgeführt werden konnte...

eine Idee die mir noch kam ist:
system("netcat -w 2 pop.gmx.net 110 > datei.txt")
und dann per programmcode diese datei.txt auslesen, aber das scheint mir doch etwas unprofessionell, oder?

gruß
muehle
 
Hi!

ok, dann muss ich wohl mal an der lösung weiter arbeiten...

noch ne frage... so ein Tutorial oder ne Referenz wie http://www.php.net gibt es nicht für c++, oder?
zumindest habe ich noch nichts in die Richtung beim googeln entdeckt...
 
Such mal hier im Forum (Button oben). Die Frage ist nämlich schon oft gestellt worden. Hm, such mal nach "C++ in 21 Tagen" oder so.
 
Mit dem Befehl "system()" kann man ja Befehle an den Komandointerpreter des Betriebsystems übergeben...
Nun starte ich dadurch ein anderes Programm, was mir Informationen auf dem Bildschirm ausgibt. Wie kann ich diese Informationen verarbeiten?
Mit popen().
 
Sehr gut, das scheint Arbeit zu sparen. Gibt es das übrigens auch für Windows?
Ja gibt es.
Zur Erklärung:
Damit wird eine einseitige Pipe geöffnet, somit kann man entweder von stdin die Rückgaben eines Programms, das nach stdout schreib lesen.
Oder über stdout rauschreiben, damit ein anderes Programm von stdin lesen kann.

Gruß Homer
 

Neue Beiträge

Zurück