échec de l'utilisation de popen() en C?

Je peux exécuter la commande suivante

xwd -root | xwdtopnm | pnmtojpeg > screen.jpg

dans un terminal sous linux et il va produire une capture d'écran de mon écran actuel.

J'essaie de faire ce qui suit avec le 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);
}

puis-je compiler et exécuter le programme ./popen > screen.jpg mais le fichier résultant screen.jpg est unrecongizable. Comment puis-je faire ce que je peux pipe à travers mon programme correctement?

OriginalL'auteur | 2009-05-08