Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1303 connectés 

  FORUM HardWare.fr
  Programmation
  C

  [C] popen, parcourir le resultat

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] popen, parcourir le resultat

n°1505326
ffomnislas​h
Posté le 20-01-2007 à 14:07:39  profilanswer
 

:hello:  
 
 
Je rencontre un petit problème. J'utilise la fonction popen() pour exécuter une commande et pclose() pour fermer le fichier résultat.
J'aurait besoin de parcourir 2 fois le résultat, je pensait donc utiliser la fonction rewind() pour revenir en début du fichier (ou l'équivalent avec seek()) seulement je reste toujours en fin de fichier.
 
Je me suis donc dit que ce devait être la différence entre un FILE* ouvert avec fopen() (file) et avec popen() (pipe). Je me demandais si il existé une solution autre que copier mon résultat dans un tableau de chaine et ensuite le traiter ?
 
merci d'avance ;)

mood
Publicité
Posté le 20-01-2007 à 14:07:39  profilanswer
 

n°1505337
Taz
bisounours-codeur
Posté le 20-01-2007 à 14:50:11  profilanswer
 

tu peux pas rewind un pipe, ce n'est pas un flux positionnable. C'est pas la faute au FILE*, c'est juste un pipe.

n°1505338
ffomnislas​h
Posté le 20-01-2007 à 15:11:23  profilanswer
 

ah oui, en faite FILE n'est pas un type en soit c'est ca ? c'est un define sur un type du genre char ?et vu qu'on utilise un pointeur, en faite ca pointe une structure qui n'est pas la même avec fopen() et popen().
J'ai beau cherché je ne trouve que des exemple pour lire des fichiers, rien sur FILE en lui même.
 
 
edit --
ouais en faite maintenant je me demande si ce n'est pas tout simplement au niveau du systeme que ce fait la distinction entre un fichier et un pipe.
 
En faite je n'en sais rien >.<

Message cité 2 fois
Message édité par ffomnislash le 20-01-2007 à 15:15:06
n°1505344
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-01-2007 à 15:24:25  profilanswer
 

ffomnislash a écrit :

ah oui, en faite FILE n'est pas un type en soit c'est ca ?


C'est un alias sur un type qui dépend de l'implémentation. On ne sait pas ce que c'est exactement et on a pas à le savoir.
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1505346
ffomnislas​h
Posté le 20-01-2007 à 15:26:46  profilanswer
 

ok et c'est donc pour ca que c'est en majuscule.
 
Sinon une idée de comment je pourrait gérer mes données ? j'avais pensé à les copier dans un fichier temporaire afin d'utiliser FILE et les fonctions associées.

n°1505348
Emmanuel D​elahaye
C is a sharp tool
Posté le 20-01-2007 à 15:42:21  profilanswer
 

ffomnislash a écrit :

ok et c'est donc pour ca que c'est en majuscule.


Pas particulièrement, non. Les hasards de l'écriture des interfaces de la bibliothèque standard, qui ne sont pas un modèle d'homogénéité... Mais bon, il y a un coté vieux cuir patiné qui me plait bien. Ca résonne avec mon âme d'artisan...
 


---------------
Des infos sur la programmation et le langage C: http://www.bien-programmer.fr Pas de Wi-Fi à la maison : http://www.cpl-france.org/
n°1505350
Taz
bisounours-codeur
Posté le 20-01-2007 à 15:44:19  profilanswer
 

ffomnislash a écrit :

ouais en faite maintenant je me demande si ce n'est pas tout simplement au niveau du systeme que ce fait la distinction entre un fichier et un pipe.


t'as aussi le droit de RTFM histoire de savoir ce qu'un un pipe.

n°1505396
Sve@r
Posté le 20-01-2007 à 20:39:52  profilanswer
 

ffomnislash a écrit :

ok et c'est donc pour ca que c'est en majuscule.


Emmanuel Delahaye a écrit :

Pas particulièrement, non. Les hasards de l'écriture des interfaces de la bibliothèque standard, qui ne sont pas un modèle d'homogénéité...


C'est vrai que question homogénéité, je verrais mieux un type "file_t" plutôt que "FILE" mais bon. Si tout était strictement conforme au moule, ce serait bien triste...
 

ffomnislash a écrit :

Sinon une idée de comment je pourrait gérer mes données ? j'avais pensé à les copier dans un fichier temporaire afin d'utiliser FILE et les fonctions associées.


Si tu dois juste lire simplement les données, le popen est parfait. Si tu dois les traiter (y revenir, etc) alors faut que tu passes par un fichier car le traitement du pipe se fait dans le noyau Unix. Si une donnée est lue du pipe, elle disparait tout comme un effet quantique disparait quand on le regarde et ça t'y peux absolument rien.


Message édité par Sve@r le 20-01-2007 à 21:12:03

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.
n°1507078
ffomnislas​h
Posté le 25-01-2007 à 11:51:00  profilanswer
 

oula je vous ai laissé sans réponse :D
 
Bon alors finalement j'ai tout simplement mis le résultat de la commande dans un char* tab[1024].
 
Le principe du pipe je le connait, c'est juste que l'implémentation avec le type FILE est "déroutant" et j'ai cherché à trop comprendre je pense >.<

n°1507272
Sve@r
Posté le 25-01-2007 à 21:29:14  profilanswer
 

ffomnislash a écrit :

Bon alors finalement j'ai tout simplement mis le résultat de la commande dans un char* tab[1024].


 
SUPAIRE !!! Mais quelle jolie idée tu as eu là !!! T'as tout stocké dans un tableau de... 1024 pointeurs. J'espère que t'as au-moins pensé aux malloc qui vont bien. Maintenant (je présume que tu stockes chaque ligne dans un des 1024 pointeurs), si le résultat fait plus de 1024 lignes ben c'est pas grave, de toute façon c'est un programme destiné à des gars qui vont le payer sans regarder le code et s'il buggue on leur refacturera le débugging. Et puis si le résultat de ma commande ne rentre pas tout entier dans la RAM je leur dirai que c'est normal, que ce genre de soft poussé nécessite vâchement plus de mémoire et comme ça je pourrai leur vendre aussi des barettes mémoire...
 
T'es mûr pour aller bosser chez Microsoft...


Message édité par Sve@r le 25-01-2007 à 21:36:22

---------------
Vous ne pouvez pas apporter la prospérité au pauvre en la retirant au riche.

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C

  [C] popen, parcourir le resultat

 

Sujets relatifs
Enregistrer le résultat d'une commande[RESOLU] proposer de telecharger les resultat d'une requete sql
[Résolu] Envoyer par mail le résultat d'un formulaire fait en html[C] Des accolades "just pour le fun" ?
[résolu] comment récupérer le nom de la table correspondant [...]Résolu - Effacer des champs dans des tables à partir d'un select
Récupérer résultat d'une requête en .net[PHP][Mysql] Transfert resultat requete
[Mysql] Operation entre resultat d'une requete DANS une requete[VBA excel] Récupérer dans 1 listbox le resultat d'1 AutoFilter!résolu
Plus de sujets relatifs à : [C] popen, parcourir le resultat


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR