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 :

Utilisation de tubes dans des fork


Sujet :

Linux

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut Utilisation de tubes dans des fork
    Bonjour,

    je viens de me lancer dans l'utilisation de tubes, mais il me manque de la doc.

    Quelqu' un connaît-il un tuto à ce sujet ?

    J'ai codé un petit programme pour tester, mais il ne marche pas comme je le souhaite.

    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
    31
    32
    33
    34
    35
    36
     
    #include <stdio.h>
    #include <sys/types.h>
    #include <unistd.h>
    #include <stdlib.h>
    #include <string.h>
     
    int main()
    {
    	int tube[2];
    	char buffer[100];
    	char tmp[100];
    	int i;
    	pid_t pid[5];
    	pipe(tube);
    	for(i=0;i<5;i++)
    	{
    		pid[i]=fork();
    		switch (pid[i])
    		{
    			case -1 :     perror("fork");
    					  exit(1);
    			case 0  :     close(tube[0]);
    					  sprintf(tmp,"je suis le fils n° %d\n",i);
    					  write(tube[1],tmp,strlen(tmp)+1);
    					  close(tube[1]);
    					  exit(0);
    			default :     close(tube[1]);
    					  read(tube[0],buffer,sizeof(buffer));
    					  printf("chaine lue de %d : %s \n",i,buffer);
    					  bzero(buffer,sizeof(buffer));
    					  close(tube[0]);
    		}
    	}	
    	return 0;
    }
    Il me renvoie :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    chaine lue de 0 : je suis le fils n° 0
     
    chaine lue de 1 :
    chaine lue de 2 :
    chaine lue de 3 :
    chaine lue de 4 :
    Je ne comprends pas vraiment, faudrait-il que je prenne un tableau de 6 tubes dans mon cas ?
    et puis écrire dans tube[i+1] dans le fils ? ( j'ai essayé, mais ça ne marche pas non plus, mais peut-être je m'y suis mal pris )

  2. #2
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

  3. #3
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    merci

  4. #4
    Membre éclairé Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Par défaut
    encore merci pour la doc,
    en fait il faut créer un tuyeau pour chaque communications entre processus.
    cela revient donc à créer le tuyeau(pipe) à l'intérieur de la boucle for.
    Et ainsi, ça marche très bien.

  5. #5
    Rédacteur/Modérateur

    Avatar de gorgonite
    Homme Profil pro
    Ingénieur d'études
    Inscrit en
    Décembre 2005
    Messages
    10 322
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : France

    Informations professionnelles :
    Activité : Ingénieur d'études
    Secteur : Transports

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Par défaut
    Si tu en as beaucoup, essaies les sockets... c'est bien plus pratique
    Evitez les MP pour les questions techniques... il y a des forums
    Contributions sur DVP : Mes Tutos | Mon Blog

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Utilisation de constantes dans des requetes SQL sous access
    Par wiyouk dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 21/08/2010, 06h58
  2. Réponses: 8
    Dernier message: 21/05/2007, 23h59
  3. Réponses: 6
    Dernier message: 01/04/2007, 20h13
  4. Réponses: 1
    Dernier message: 10/05/2006, 19h45
  5. Réponses: 2
    Dernier message: 12/04/2006, 20h48

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