IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

POSIX C Discussion :

Filtre ( pipe())


Sujet :

POSIX C

  1. #1
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 4
    Points
    4
    Par défaut Filtre ( pipe())
    Bonsoir

    je veux coder des fonctions C qui simulent un filtre .

    Par exemple :commande1| commande2 |commande3....|... commanden
    La premiere fonction exécute la commande 1 et la deuxieme exécute la commande 2 aprés avoir redirigé son entrée à la sortie de commnde1 et ainsi de suite ....

    Est ce vous pouvez me donner une piste?

    Merci

  2. #2
    Membre émérite Avatar de nicolas.sitbon
    Profil pro
    Inscrit en
    Août 2007
    Messages
    2 015
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 2 015
    Points : 2 280
    Points
    2 280
    Par défaut
    Généralement on fais ça avec des processus pas des fonctions, pour la simple et bonne raison, que les redirections de flux se font au niveau du processus et non d'un fonction (un thread j'imagine?).
    "The quieter you become, the more you are able to hear"
    "Plus vous êtes silencieux, plus vous êtes capable d'entendre"

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    115
    Détails du profil
    Informations personnelles :
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2007
    Messages : 115
    Points : 110
    Points
    110
    Par défaut
    Ca sent le shell... multi-pipe ?

    Rien de bien compliqué, tu executes tes commandes de droite a gauche, tu ouvres a chaque fois un pipe et tu rediriges la sortie du pipe vers l'entree du binaire executé et la sortie du prochain binaire vers l'entree de ce pipe, et ainsi de suite.

    C'est facile en récursif.

    fork(), pipe(), dup2() ?

  4. #4
    Candidat au Club
    Inscrit en
    Mai 2008
    Messages
    12
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 12
    Points : 4
    Points
    4
    Par défaut
    Citation Envoyé par Tusbar Voir le message
    tu executes tes commandes de droite a gauche, tu
    Je ne vois pas comment on passe de droite à gauche? Tu veux dire on commence par la derniere commande puis l'avant dernier puis ....et on arrête la récursivité à la commande 1. J'avoue que je n'ai pas compris ton algorithme. Je pense qu'on doit commencer par la premiere commande puis la deuxieme et ainsi de suite.
    J'ai procédé comme ça:

    Je déclare un tableau de deux colonnes comme variable globale
    Boucle for au nombre de | dans la commande.{
    1- Un pipe() à chaque itération
    2- appel de la fonction avec en argument la commande}

    J'ai testé cette implémentation mais ça ne marche pas toujours.

    Une commande de type :" sort fichier| cat | cat > fichier de sortie" donne un bon résultat
    Par contre :"cat fichier| sort | cat > fichier de sortie" me donne un fichier de sortie vide

    Merci

Discussions similaires

  1. Algorithme d'un filtre ?
    Par Vince78 dans le forum Algorithmes et structures de données
    Réponses: 17
    Dernier message: 04/09/2002, 15h54
  2. recherche filtre flou gaussien
    Par gimlithedwarf dans le forum Langage
    Réponses: 4
    Dernier message: 01/08/2002, 22h32
  3. TADOTable et filtre
    Par GaL dans le forum C++Builder
    Réponses: 16
    Dernier message: 02/07/2002, 16h52
  4. Filtre passe Bande
    Par Mau dans le forum Algorithmes et structures de données
    Réponses: 4
    Dernier message: 28/06/2002, 17h03
  5. Probleme de filtre dans bdd
    Par scorpiwolf dans le forum C++Builder
    Réponses: 2
    Dernier message: 04/06/2002, 10h43

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo