Ausgabe auf Konsole einlesen



  • Hallo zusammen

    erst mal sorry das ich mit einer (schätze mal) relativ einfachen Frage hier starte.

    Ich schreibe ein Program welches verschiedene Programme bzw. Perl Skripte startet und derren Ergebnisse, die auf der Konsole ausgegeben werden (Linux), wieder in das Programm einlesen soll. Die Ausgabe der Programme ist heirbei einge Zeilen lang.
    Gestartet werden die Programme mit system(..) was auch gut funktioniert, aber leider habe ich es nicht geschafft die Konsolenausgabe wieder in emein Programm ein zu lesen (Muss auch Dateien einlesen, das ist aber kein Problem!). Habe verschiedene Sachen mit istream und cin ausprobiert, habe aber nix zum laufen bekommen, wie gesagt noch nicht sehr viel Erfahrung mit c++.

    Wäre nett wenn mir jemand da mit einem Tip helfen könnte.

    Gruss



  • die einfachste variante: ausgabe in eine datei umleiten und dann die datei auslesen.



  • Also system(...) ist einfach das falsche Kommando. Die Lösung ist aber nicht so einfach.

    Du benötigst die Systemaufrufe pipe(2), fork(2) und exec(3). Da geht es aber schon ans eingemachte. Wenn Du es selbst machen willst, solltest Du Dir ein Buch über Unix-Systemprogrammierung rein ziehen.

    Eine andere Möglichkeit ist red::pstream (http://pstreams.sourceforge.net/). Das implementiert ein iostream-Interface für Prozesse.

    Unter der C-Bibliothek findest Du noch popen(3) und pclose(3), welche dir einen FILE* liefern.

    Tntnet



  • im kleinen gehts natürlich..
    wie auch immer.. ob schön .. *g

    system ("ping.exe localhost>test.txt");
    	fstream fin ("test.txt",ios::in);
    
    	string line;
    	while (getline(fin,line,'\n')){
    		cout<<line<<endl;
    	}
    

Anmelden zum Antworten