mit c++ externes Programm starten und dessen Ausgabe umleiten
-
Hi, also wie der Titel es schon sagt:
Anmerkung: arbeite unter Linux.
Ich möchte innerhalb meines Hauptprogramms ein externes Programm starten, aber erst WÄHREND der Laufzeit und die Ausgabe von dem externen Programm als Eingabe von meinem Hauptprogramm verwenden.
Mit Pipes komm ich da nicht wirklich weiter, weil die ja alle schon beim Programmstart geladen werden (bitte berichtigt mich falls ich falsch liege).
MfG
Björn
-
Du könntest es per system("ls") versuchen. Allerdings gibt das nur ein int wieder, dessen Inhalt plattformabhängig ist. Vielleicht kannst du deinem Programm beibringen, die Ausgabe in eine Datei zu schreiben, die du danach wieder einliest? Oder probier mal system("ls >> inhalt"). Praktische Erfahrung hab ich damit nicht, vermute aber, dass es gehen könnte...
gruß
Martin
-
danke erstmal für die antwort
ja genau so mach ich es auch gerade. nur braucht das gestartete Programm ca 15 Minuten bis alles ausgeführt ist und ich wollte anhand der couts diese Zeit überbrücken indem ich statusmeldungen ausgebe
-
Naja wenn du mit den couts den Status deines Programms ausgeben willst, sollte das mit programminternen Informationen moeglich sein. Wozu also auf Informationen zugreifen, die nicht im Programm enthalten sind? Gib mal einen kleinen Abriss dessen was du da machst

-
Ich versteh dein Problem mit den pipes nicht...
Die kannst du doch so nutzen
#include <stdio.h> int main() { char buffer[1024]={0}; FILE* lese_von = NULL; //Beliebig viele Vorbereitungen... //... printf("Mein Testprogramm!"); lese_von = popen("ls -la", "r"); if(lese_von == NULL) return 1; else { while(!feof(lese_von)) { fscanf(lese_von, "%s", buffer); // Hier kannst du die Ausgabe verarbeiten printf("%s", buffer); } pclose(lese_von); //Beliebig viel Programmcode return 0; } }Oder nicht...

Gruß
zeigerzeiger
-
Tausen dank ZeigerZeiger
Genau auf das war ich nämlich nun auch gekommen und habs so gemacht
Nur dazu musste ich erstmal auf popen kommen
Danke