[C/Shell] Stocker stdin d'une cmd shell [Résolu/Fermé]

Signaler
Messages postés
177
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
-
Messages postés
177
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
-
Bonjour,

Je me demande si c'est possible de stocker le resultat d'une commande shell dans une variable dans un programme C., sans passer le flux de sortie sur celui d'entrée du programme C. Je m'explique avec un petit exemple :
Voici ce que je ne veux pas faire (en shell)
#gcc -o prog prog.c
#ls | ./prog

Voici ce que je veux faire (en langae_c)
int main(){
char chain[200];
chaine = system("ls");
printf("%s", chaine);
}

Je sais cela ne sert a rien de vouloir stocker le resultat de "ls" dans une var C pour l'afficher ensuite, mais c'est le principe qui m'interresse.

3 réponses

Messages postés
9688
Date d'inscription
vendredi 23 avril 2004
Statut
Contributeur
Dernière intervention
2 octobre 2020
1 263
La question a été posé pas mal de fois, et il me semble que la réponse est "non".
la seul solution qui puisse être trouvé c'est d'écrire dans un fichier. Soit par indirection
system("ls > tmp");
soit en utilisant popen.
Bonne chance.
Messages postés
18240
Date d'inscription
lundi 15 janvier 2007
Statut
Contributeur
Dernière intervention
30 novembre 2020
5 211
hello
avec popen, comme le dit Char Snipeur
#include "stdio.h"

int main(){
	FILE* fp;
	char buffer [1000];
	fp = popen("ls","r");
	fread(buffer,1,sizeof(buffer),fp);
	printf("%s",buffer);
	fclose (fp);
	return 0;
}  
Messages postés
177
Date d'inscription
lundi 22 octobre 2007
Statut
Membre
Dernière intervention
1 mars 2013
5
Parfait, merci beaucoup.