nicht erfolgreiche Verwendung von popen() in C?

Ich kann den folgenden Befehl ausführen

xwd -root | xwdtopnm | pnmtojpeg > screen.jpg

in ein terminal unter linux und es wird produzieren ein screenshot von meinem aktuellen Bildschirm.

Ich versuche, das mit dem folgenden code:

#include <stdio.h>
#include <stdlib.h>
int main()
{
   FILE *fpipe;
   char *command="xwd -root | xwdtopnm | pnmtojpeg";
   char line[256];

   if ( !(fpipe = (FILE*)popen(command,"r")) )
   {  //If fpipe is NULL
      perror("Problems with pipe");
      exit(1);
   }

   while ( fgets( line, sizeof line, fpipe))
   {
      //printf("%s", line);
      puts(line);
   }
   pclose(fpipe);
}

dann habe ich das Programm kompilieren und ausführen ./popen > screen.jpg aber die resultierende Datei screen.jpg ist unrecongizable. Wie kann ich dies tun, so dass ich die Leitung durch mein Programm korrekt?

InformationsquelleAutor | 2009-05-08

Schreibe einen Kommentar