172 votes

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

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

Je veux exécuter une commande sous Linux, et obtenir le texte renvoyé de ce qu'il affiche ... mais je ne veux pas que ce texte soit imprimé à l'écran. Il doit y avoir un moyen plus élégant que de créer un fichier temporaire, non?

318voto

Steve Kemp Points 2304

Vous voulez que le "popen" de la fonction. Voici un exemple d'exécution de la commande "ls /etc" et outputing à la console.

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


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

 FILE *fp;
 int status;
 char chemin[1035];

 /* Ouvrir la commande de lecture. */
 fp = popen("/bin/ls /etc/", "r");
 if (fp == NULL) {
 printf("impossible d'exécuter la commande\n" );
de sortie;
}

 /* Lecture de la sortie d'une ligne à un temps de sortie. */
 while (fgets(ligne, sizeof(chemin)-1, fp) != NULL) {
 printf("%s", chemin);
}

 /* fermer */
pclose(fp);

 return 0;
}


6voto

Mehrdad Afshari Points 204872

C'est un classique:

  1. Créer un tuyau.
  2. fork();
  3. Dans l'enfant, configurez les descripteurs de fichier.
  4. exec la commande dans l'enfant.

5voto

dirkgently Points 56879

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

-7voto

Tommy Hui Points 1055

Généralement, si la commande est un programme externe, vous pouvez utiliser le système d'exploitation pour vous aider ici.

 command > file_output.txt
 

Donc, votre code C ferait quelque chose comme

 exec("command > file_output.txt");
 

Ensuite, vous pouvez utiliser le fichier file_output.txt.

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X