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 stehen

    Ich 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.


Anmelden zum Antworten