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

  FORUM HardWare.fr
  Programmation
  C

  [C] Interpreteur de commandes - Multipipes

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[C] Interpreteur de commandes - Multipipes

n°2077418
FengaPappi​t
Posté le 20-05-2011 à 17:05:45  profilanswer
 

Bonjour,  
 
Ayant pour projet le codage d'un interpréteur de commandes unix, nous sommes confrontes à un petit problème.
Nous arrivons à exécuter une commande contenant un pipe, du genre de ls | less, mais nous devons réussir à gérer les pipes en nombre théoriquement infini, et nous bloquons sur la façon de faire.
La solution la plus évidente serait de faire ceci en récursif, mais nous ne sommes pas à l'aise avec ceci, et nous n'avons plus énormément de temps pour faire des tests en utilisant ce principe afin de l'assimiler.
Nous aimerions simplement, mon groupe et moi même, que l'on nous explique brièvement de quelle façon nous pourrions procéder, récursivement ou non, pour traiter ce problème.
Je peux fournir de plus amples informations sur la structure du code, ou quoi que ce soit d'autre
Merci d'avance pour tout éclaircissement par rapport à ces multipipes.

mood
Publicité
Posté le 20-05-2011 à 17:05:45  profilanswer
 

n°2077509
billgatesa​nonym
Posté le 22-05-2011 à 00:07:42  profilanswer
 

Bonsoir,
 
Non, je ne crois pas que ce soit du récursif, mais plutôt de l'itératif.
La récursivité sert à explorer des structures arborescente.
Or ici, sauf erreur, il n'y a pas d'arbre, juste une succession de traitements qui s’enchaînent avec la sortie de l'un qui devient l'entrée de l'autre.
 
Donc, un algorithme serait :
 
Boucle sur chaque morceau situé entre le début de la ligne ou le début d'un pipe, jusqu'au pipe suivant ou jusqu'à la fin de ligne
{
  Lance le programme indiqué au début du morceau
  en lui donnant les paramètres qui suivent
  en lui donnant en entrée (stdin) le paramètre qui suit le signe inférieur, ou les données qui viennent d'un fichier temporaire si le morceau commence par un pipe
  en dirigeant sa sortie (stdout) vers l'écran, ou vers ce qui suit le signe supérieur, ou vers un fichier temporaire si le morceau se termine par un pipe
}


Message édité par billgatesanonym le 22-05-2011 à 00:08:58
n°2077513
FengaPappi​t
Posté le 22-05-2011 à 00:59:03  profilanswer
 

Bonsoir, est-on oblige de passer par un fichier temporarire ?
Du coup il faudrait open un fichier, rentrer son fd en sortie du pipe, et donner ce fd en entree du pipe suivant ?

n°2077515
WiiDS
20 titres en GC, 0 abandon, 0 DQ
Posté le 22-05-2011 à 01:22:14  profilanswer
 

Je confirme, pour avoir eu un projet à la con de ce type (a Epitech :o) le récursif est définitivement une mauvaise idée, ça engendre des emmerdes qui vont au delà de la simple erreur de conception (notamment on ne peut pas récupérer le code d'erreur du processus qu'on a lancé en récursif vu qu'alors on se retrouve dans le fils d'un fils d'un fils ... :o)

 

La meilleure solution est donc une solution qui se rapproche  de ce que dit billgatesanonym, à savoir une boucle qui va forker, lancer le programme, créer le pipe, et à la prochaine itération vous vous servez de l'entrée du pipe créé précédemment etc ... :o


Message édité par WiiDS le 22-05-2011 à 01:22:20

---------------
"I can cry like Roger. It's just a shame I can't play like him" - Andy Murray, 2010

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

  [C] Interpreteur de commandes - Multipipes

 

Sujets relatifs
Programmer une communication via liaison RS232 en Cerreur de syntaxe, probleme langage C
Buffer / Buffer overflow en C et en Java[C/C++/C#] Aspirateur de sites
Problème avec un alphabeta en C pour othello[Objective-C] Création d'image reçue via socket
Copie d'octet en CAider Moi sur Un Exercice En Language C svp
besoin d'aide en C++ ou VB6 svp ma soutenance dans 20 jour :""([C++] Accéder à un service Windows (message personnalisé)
Plus de sujets relatifs à : [C] Interpreteur de commandes - Multipipes


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