Externes Programm starten und Ausgabe des Programms zurückerhalten - Linux
-
Hallo,
ich muss die Ausgabe eines externen Programmes erhalten.
Das Programm rufe ich innerhalb meines C-Programms auf.Bsp.:
system("date"); //date soll nur als Beispiel stehenIch weiß, dass es auch noch die exec-Funktionsfamilie gibt.
Wie kann ich z.B. die Ausgabe von "date" in meinem C-Programm weiterverarbeiten?
Gruß,
dragonos
-
Du könntest die Ausgabe von Date in eine Datei umleiten. Vielleicht gibts aber auch noch bessere Möglichkeiten
-
Hallo,
für diesen Zweck gibt es popen, welches die Standardausgabe in einen File-Stream umleiten kann:
char psBuffer[128]; FILE *f; if( (f = popen( "date", "r" )) == NULL ) exit( 1 ); while( !feof( f ) ) { if( fgets( psBuffer, 128, f ) != NULL ) printf( psBuffer ); } pclose( f );
Ansonsten gilt: wenn möglich, nie system verwenden, sondern die Sache mit Linux-Systemaufrufen erledigen...
MfG
-
Oder wenn man nicht nur die Standardausgabe des Programms, sondern auch die Standardeingabe kontrollieren will, dann baut man sich das popen halt mit pipe fork und exec* nach.