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

Linux Discussion :

Exemple utilisation de tube ( pipe)


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Par défaut Exemple utilisation de tube ( pipe)
    bonjour à tous


    je suis à la recherce d'un petit exemple qui utilise la notion des tubes sous unix/linux pour 2 processus ( le fils en voi un message au pere ou l'inverse )

    ( je suis même pas débutant en C mais j'ai des notions, et l'exemple c'est un cours d'unix )

    Merci

  2. #2
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    ps aux | grep firefox

  3. #3
    Membre confirmé
    Homme Profil pro
    à la recherche d'un stage de fin de formation dans le décisionnel
    Inscrit en
    Juillet 2002
    Messages
    154
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : à la recherche d'un stage de fin de formation dans le décisionnel

    Informations forums :
    Inscription : Juillet 2002
    Messages : 154
    Par défaut
    oups je crois que j'ai pas précisé que c'est pour l'utilisation de la fonction pipe() en langage c et pas l'utilisation du caractère pipe pour les commandes unix.

  4. #4
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2007
    Messages : 69
    Par défaut
    Oops désolé ;-)

    Malheureusement, je ne peux pas t'aider sur ce coup la.

  5. #5
    Membre Expert
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Octobre 2008
    Messages
    1 515
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 46
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 515
    Par défaut
    L'idée :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    int fd[2];
    pid_t pid;
     
    if (0 != pipe(fd)) {
        perror("pipe");
        exit(1):
    }
     
    pid = fork();
    if (pid == -1) {
        perror("fork");
        exit(0);
    } else if (pid == 0) {
     
        /* Fils */
     
        /* On ferme le cote "ecriture" du pipe */
        close(fd[1]);
     
        /* Maintenant on peut lire sur fd[0] */
     
    } else {
     
        /* Pere */
     
        /* On ferme le cote "lecture" du pipe" */
        close(fd[0]);
     
        /* Maintenant on peut ecrire sur fd[1] */
    }
    Dans cet exemple, le fils peut lire sur fd[0] tout ce que le père écrit sur fd[1].

  6. #6
    Membre à l'essai
    Inscrit en
    Septembre 2008
    Messages
    5
    Détails du profil
    Informations forums :
    Inscription : Septembre 2008
    Messages : 5
    Par défaut
    voila un exemple tres simple:


    #include<stdio.h>
    #include<unistd.h>
    #include<stdlib.h>
    #include<sys/types.h>
    #include<sys/wait.h>
    int main()
    {
    int tube[2];
    char c;
    if(pipe(tube))
    {perror("probleme de creation du tube\n");exit(-1);}

    switch (fork())
    {

    case -1: {perror("probleme de fork \n");exit(-2);}

    case 0:
    {close(tube[1]); //le fils n'ecrit pas
    while(read(tube[0],&c,1))
    printf("le caractere lu est: %c \n\n",c);
    write(1,&c,1);
    exit(0);
    }
    default:{int cr;
    close(tube[0]); //le pere ne lit pas dans le tube
    while((c=getchar())!=EOF)
    {
    if((c<='z')&&(c>='a'))
    {
    write(tube[1],&c,1); //ecriture dans le tube
    }
    }
    close(tube[1]); //fermeture du tube en ecriture
    wait(&cr); //attente de la fin du fils
    }
    }
    exit(0);
    }

    tu compile le code par: gcc -o pipe pipe.c
    et execution par: ./pipe

    ensuite tu tape des lettre de 'a-z' et voila je pense que c simpe

Discussions similaires

  1. Les tubes (pipes)
    Par winux32 dans le forum Windows
    Réponses: 3
    Dernier message: 21/04/2008, 08h22
  2. LES TUBES (Pipe)
    Par ould64 dans le forum Linux
    Réponses: 2
    Dernier message: 19/04/2008, 15h36
  3. Programme --> TUBES (pipe)
    Par ould64 dans le forum C
    Réponses: 3
    Dernier message: 18/04/2008, 22h29
  4. Exemples utilisations tabletags
    Par Ethylene dans le forum Struts 2
    Réponses: 3
    Dernier message: 13/06/2007, 21h43
  5. Utilisation de tubes dans des fork
    Par je®ome dans le forum Linux
    Réponses: 4
    Dernier message: 31/05/2006, 21h50

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