web-dev-qa-db-fra.com

C: Exécuter une commande système et obtenir une sortie?

Duplicate possible:
Comment puis-je exécuter un programme externe à partir de C et analyser sa sortie?

Je veux lancer une commande sous Linux et obtenir le texte renvoyé, mais je ne souhaite pas afficher ce texte à l'écran. Existe-t-il un moyen plus élégant que de créer un fichier temporaire?

125
jimi hendrix

Vous voulez la fonction " popen ". Voici un exemple d'exécution de la commande "ls/etc" et sortie sur la console.

#include <stdio.h>
#include <stdlib.h>


int main( int argc, char *argv[] )
{

  FILE *fp;
  char path[1035];

  /* Open the command for reading. */
  fp = popen("/bin/ls /etc/", "r");
  if (fp == NULL) {
    printf("Failed to run command\n" );
    exit(1);
  }

  /* Read the output a line at a time - output it. */
  while (fgets(path, sizeof(path)-1, fp) != NULL) {
    printf("%s", path);
  }

  /* close */
  pclose(fp);

  return 0;
}
229
user14038

Vous avez besoin d'une sorte de communication inter-processus. Utilisez un pipe ou un tampon partagé.

4
dirkgently