Terminal Rückgabe auslesen



  • Hey!

    Ich habe mal eine Frage, wenn ich mit system() einen Terminel Befehl ausführe, wie kann ich dann herausfinden, was im Terminal als Rückgabe ausgegeben wird?
    Also z.B. mache ich eine FTP-Verbindung und will gucken, ob sie fehlschlägt oder nicht.

    Gibt es dafür eine Möglichkeit?


  • Mod

    Das ist mit system() schwierig, weil system() an sich nur den Rückgabewert der Befehls zurückgibt und das ist bloß ein Integer (i.d.R. 0 für Erfolg und ungleich 0 für Fehlschlag). Was man machen könnte ist den Befehl im system() so zu schreiben, dass die Ausgabe in eine Datei erfolgt (viele Kommandointerpreter unterstützen dies) und dann hinterher die Datei auslesen.

    Die einfachere Möglichkeit ist es, Betriebssystemfunktionen zu benutzen um den Befehl auszuführen die dir mehr Informationen zurückgeben. Da du ohnehin schon system() benutzt, dürfte mangelnde Portabilität dich wohl nicht weiter stören. Du müsstest aber sagen für welches System du entwickelst, dann kann ich dich entsprechend verschieben.



  • Hm.. das mit der Datei auslesen hatte ich auch schon gedacht, allerdings wäre es für meine Zwecke viel zu langsam.. Wenn man einen Befehl ca. 30^3 mal ausführen muss, dann dürfte die Möglichkeit mit der Datei einfach viel zu langsam sein 😃

    Ich entwickle für Mac OS X.


  • Mod

    C++++++++ schrieb:

    Ich entwickle für Mac OS X.

    Oje, da kenn ich mich nicht so aus. Das ist Unix-kompatibel, oder? Dann bekommst du am ehesten in diesem Forum Antworten.

    Wenn du system() 30^3 Mal aufrufen und auswerten musst, dann würde ich mich fragen ob dies überhaupt die richtige Vorgehensweise ist. Was machst du denn genau? Vielleicht gibt es schon einen passenden Betriebssystemaufruf eben dafür. Oder falls es ein eigenes Programm ist, wäre vielleicht ein kleines Kommandozeilenscript eine bessere Lösung.



  • Dieser Thread wurde von Moderator/in SeppJ aus dem Forum C++ (auch C++0x) in das Forum Linux/Unix verschoben.

    Im Zweifelsfall bitte auch folgende Hinweise beachten:
    C/C++ Forum :: FAQ - Sonstiges :: Wohin mit meiner Frage?

    Dieses Posting wurde automatisch erzeugt.



  • SeppJ schrieb:

    Wenn du system() 30^3 Mal aufrufen und auswerten musst, dann würde ich mich fragen ob dies überhaupt die richtige Vorgehensweise ist. Was machst du denn genau? Vielleicht gibt es schon einen passenden Betriebssystemaufruf eben dafür. Oder falls es ein eigenes Programm ist, wäre vielleicht ein kleines Kommandozeilenscript eine bessere Lösung.

    Ack.

    Ansonsten ist man: popen wohl das, was Du suchst, wenn Du ein system-Pendant suchst, mit dem Du die Ausgabe Deiner Programme verwerten kannst.

    FTP-Verbindung klingt aber eher nach libcurl oder so. Das ist viel sauberer und robuster als popen mit einem FTP-Client.



  • Hmm... Hatte eig gegoogelt aber keine Bibliothek gefunden mit der man FTP Verbindungen herstellen kann..
    Könntest du mir einen Link zu einem Bsp schreieben?



  • C++++++++ schrieb:

    Hmm... Hatte eig gegoogelt aber keine Bibliothek gefunden mit der man FTP Verbindungen herstellen kann..
    Könntest du mir einen Link zu einem Bsp schreieben?

    http://curl.haxx.se/libcurl/c/ftpget.html


Anmelden zum Antworten