16 votes

Obtenir la sortie d'une commande système de stdout en C

J'écris un programme en C sous Android/Linux qui exécute une commande système. La commande envoie du texte à stdout, et j'essaie de capturer la sortie dans une chaîne ou un tableau de caractères.

Par exemple :

system("ls");

listerait le contenu du répertoire courant sur stdout, et j'aimerais pouvoir capturer ces données dans une variable de manière programmatique en C.

Comment dois-je m'y prendre ?

Gracias.

19voto

jxh Points 32720

Vous souhaitez utiliser popen . Il renvoie un flux, comme fopen . Cependant, vous devez fermer le flux avec pclose . Cela s'explique par le fait que pclose se charge de nettoyer les ressources associées au lancement du processus enfant.

FILE *ls = popen("ls", "r");
char buf[256];
while (fgets(buf, sizeof(buf), ls) != 0) {
    /*...*/
}
pclose(ls);

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