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

C Discussion :

Programme --> TUBES (pipe)


Sujet :

C

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut Programme --> TUBES (pipe)
    Bonjour,
    Je voudrais que vous m'aidez a ecrire:
    1) un programme permettant de transferer le contenu d’un tableau d’entiers d’un pere vers un fils en
    utilisant un tube. Le fils affichera le contenu du tableau reçu.
    2) Modifier le programme precedent pour que le fils inverse l’ordre du tableau et le retourne au pere qui
    l’affichera.

    voila mon code:

    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
     
    in main()
    {
    int fils;
    int p[2];
    int i;
    int T[5] = {0, 1, 2, 3, 4};
    int buf[5];
    pipe (&p[0]);
    if((fils = fork())==0)
    {
    close(p[1]);
    read(p[0], buf, 5*sizeof(int));
    for(i=0; i<5; i++)
    {
    printf("%i", buf[i]);
    }
    close(p[0]);
    exit(0);
    }
    else
    {
    close(p[0]);
    write(p[1],T, 5*sizeof(int));
    wait(NULL);
    close(p[1]);
    exit(0);
    }
    Je vous remercie en avancce.

    Cordialemant

  2. #2
    Expert confirmé

    Avatar de snake264
    Homme Profil pro
    Datascientist chez Leboncoin
    Inscrit en
    Novembre 2006
    Messages
    2 914
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 38
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Datascientist chez Leboncoin
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 914
    Par défaut
    Utilise la balise code quand tu poste du code s'il te plait merci
    Pour ton code La primitive de création d’un tube ordinaire (non
    nommé) est: pipe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    # include <unistd.h>
    int pipe (int p[2]);
    p[0] correspond au descripteur en mode lecture
    p[1] correspond au descripteur en mode écriture

    Voici un petit exemple qui pourrait t'aider:
    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
    # include <stdio.h>
    # include <unistd.h>
     
    int tube[2];
    char buf[20];
    int main(void) 
    {
              pipe(tube);
              if (fork())         /* pere */
              { 
                      close (tube[0]);
                      write (tube[1], "bonjour", 8);
              } 
              else                /* fils */
              { 
                      close (tube[1]);
                      read (tube[0], buf, 8);
                      printf ("%s bien recu \n", buf);
              }
              return 0;
    }

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    73
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 73
    Par défaut Programme --> TUBES (pipe)
    Je te remercie mais j'ai pas compris :

    la valeure tu tableau c'est toujours 2 (c'est par ce que on a une entree et une sortie?)

    2) est ce que tu as une idée sur la 2 question ( modification du programme pour que le fils inverse l'ordre du tableau et le retourne au père qui l'affichera?)

    3) Nous considerons cette fois-ci deux fils. Le premier d'entre eux cree un tableau et le transfert au deuxiemefills.
    Celui-ci l'affiche, en inverse l'ordre et le retourne a l'autre fills. Quelles modifcations doit-on apporter au programme precedent ?


    Cordialement

  4. #4
    Membre prolifique
    Avatar de Sve@r
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Février 2006
    Messages
    12 832
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Aéronautique - Marine - Espace - Armement

    Informations forums :
    Inscription : Février 2006
    Messages : 12 832
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par ould64 Voir le message
    Je te remercie mais j'ai pas compris :

    la valeure tu tableau c'est toujours 2 (c'est par ce que on a une entree et une sortie?)
    Oui. Quand tu appelles la fonction pipe() tu lui passes en paramètre un tableau de 2 int.
    La fonction stocke dans le tableau les identificateurs du tube. Le coté[0] du tableau est l'identificateur de lecture et le coté [1] est l'identificateur d'écriture.
    Comme à l'issue du fork le processus fils reçoit une copie du tableau, il a lui aussi les identificateurs de lecture et d'écriture. C'est pour ça que le processus qui écrit doit fermer l'identificateur de lecture et le processus qui lit doit fermer l'identificateur d'écriture.

    Citation Envoyé par ould64 Voir le message
    2) est ce que tu as une idée sur la 2 question ( modification du programme pour que le fils inverse l'ordre du tableau et le retourne au père qui l'affichera?)
    Ben si t'arrives à envoyer le tableau à l'endroit t'as plus qu'à l'envoyer à l'envers...
    Mon Tutoriel sur la programmation «Python»
    Mon Tutoriel sur la programmation «Shell»
    Sinon il y en a pleins d'autres. N'oubliez pas non plus les différentes faq disponibles sur ce site
    Et on poste ses codes entre balises [code] et [/code]

Discussions similaires

  1. Exemple utilisation de tube ( pipe)
    Par amnay dans le forum Linux
    Réponses: 5
    Dernier message: 03/04/2010, 11h44
  2. Les tubes (pipes)
    Par winux32 dans le forum Windows
    Réponses: 3
    Dernier message: 21/04/2008, 08h22
  3. LES TUBES (Pipe)
    Par ould64 dans le forum Linux
    Réponses: 2
    Dernier message: 19/04/2008, 15h36
  4. Réponses: 5
    Dernier message: 05/01/2007, 21h26
  5. Réponses: 3
    Dernier message: 09/02/2004, 14h35

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