Contenu | Rechercher | Menus

Annonce

Si vous rencontrez des soucis à rester connecté sur le forum (ou si vous avez perdu votre mot de passe) déconnectez-vous et reconnectez-vous depuis cette page, en cochant la case "Me connecter automatiquement lors de mes prochaines visites". Attention, le forum rencontre actuellement quelques difficultés. En cas d'erreur 502, il ne faut pas re-valider l'envoi d'un message ou l'ouverture d'une discussion, au risque de créer un doublon.

La section divers se réorganise ! De nouvelles sous-sections à venir. (plus d'infos + donner son avis)

#1 Le 26/03/2006, à 08:39

Renorems

[Résolu] [C] Récupérer la sortie d'une commande shell

Bonjour à tous (et à toutes mais ça j'y crois pas trop wink )

J'aimerais savoir quelle est la manière la plus propre selon vous pour récupérer la sortie d'une commande en C. Par exemple, admettons que j'ai un programme qui doive lancer ls et récupérer sa sortie pour le réafficher d'une autre manière. Comment faire ?

Bonne journée,

Renorems.

Dernière modification par Renorems (Le 26/03/2006, à 09:14)

Hors ligne

#2 Le 26/03/2006, à 09:06

Xaero

Re : [Résolu] [C] Récupérer la sortie d'une commande shell

via popen, et tu lis le contenu.

Petit exemple, pour afficher le resultat de ls -lSh :

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

int main(int argc, char** argv)
{
	FILE *f; 
	char buffer[BUFSIZ];

	if ( (f = popen("ls -lSh", "r")) == NULL )  // ouverture
		exit(1); 
		
	while ( fgets(buffer, BUFSIZ, f) != NULL ) 
		fputs(buffer, stdout);  
	/**
	 * ici on l'affiche sur stdout (sortie standard), 
	 * mais tu peux faire ce que tu veux de la ligne lue
	 */

	pclose(f); // fermeture

	return EXIT_SUCCESS;
}

Hors ligne

#3 Le 26/03/2006, à 09:14

Renorems

Re : [Résolu] [C] Récupérer la sortie d'une commande shell

Merci, c'est exactement ce qu'il me fallait. smile

Edit : Où est défini (et comment) la constante BUFSIZ ?

Dernière modification par Renorems (Le 26/03/2006, à 09:20)

Hors ligne

Haut de page ↑