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

  1. #1
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681

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

  4. #4
    Membre actif Avatar de je®ome
    Inscrit en
    Octobre 2005
    Messages
    285
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 285
    Points : 225
    Points
    225
    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 : 40
    Localisation : France

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 10 322
    Points : 18 681
    Points
    18 681
    Par défaut
    Si tu en as beaucoup, essaies les sockets... c'est bien plus pratique

+ 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, 07h58
  2. Réponses: 8
    Dernier message: 22/05/2007, 00h59
  3. Réponses: 6
    Dernier message: 01/04/2007, 21h13
  4. Réponses: 1
    Dernier message: 10/05/2006, 20h45
  5. Réponses: 2
    Dernier message: 12/04/2006, 21h48

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