[C/Shell] Stocker stdin d'une cmd shell

Résolu/Fermé
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 - 4 févr. 2010 à 10:09
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 - 4 févr. 2010 à 20:46
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.
A voir également:

3 réponses

Char Snipeur Messages postés 9696 Date d'inscription vendredi 23 avril 2004 Statut Contributeur Dernière intervention 3 octobre 2023 1 297
4 févr. 2010 à 12:16
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.
0
dubcek Messages postés 18718 Date d'inscription lundi 15 janvier 2007 Statut Contributeur Dernière intervention 22 mars 2024 5 615
4 févr. 2010 à 12:38
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;
}  
0
kaham Messages postés 177 Date d'inscription lundi 22 octobre 2007 Statut Membre Dernière intervention 1 mars 2013 5
4 févr. 2010 à 20:46
Parfait, merci beaucoup.
0