La présentation est en train de télécharger. S'il vous plaît, attendez

La présentation est en train de télécharger. S'il vous plaît, attendez

1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 6 – COMMUNICATION INTER PROCESSUS : TUBES.

Présentations similaires


Présentation au sujet: "1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 6 – COMMUNICATION INTER PROCESSUS : TUBES."— Transcription de la présentation:

1 1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 6 – COMMUNICATION INTER PROCESSUS : TUBES

2 2 OUTILS DE COMMUNICATION INTER PROCESSUS (IPC) sémaphores  tubes files de messages segments de mémoire partagée

3 3 TUBES - opérateur | du shell - file d’octets de capacité fixe - un tube possède un i-node, donc un descripteur de fichier - mais un tube n’est pas un fichier ! - donc sans lien avec un répertoire Les tubes permettent de communiquer entre processus de même propriétaire

4 CREATION D’UN TUBE SOUS UNIX int pipe (int *) /* retourne 0 ou -1 si échec */ exemple :int p [2], r; r = pipe (p); if (r == -1) exit (1); /* p [0] : descripteur d’accès en lecture p [1] : descripteur d’accès en écriture */ 4 P [1]P [0]

5 5 FERMETURE D’UN TUBE Avec l’exemple précédent : - fermeture d‘ un descripteur close (p [0]) ou close (p [1]) - mais sans possibilité de réouverture

6 6 LECTURE DANS UN TUBE lire = prélever une information dans la file on ne peut pas relire plusieurs fois la même information avec l’exemple précédent : int x, p [2]; char y; …. pipe (p); …. read (p [0], 1, &y); read (p [0], sizeof (int), &x); P [1]

7 7 ECRITURE DANS UN TUBE écrire = ranger une information dans la file Avec l’exemple précédent : int x = 4, p [2]; char y = ‘ a ’; …. pipe (p); …. write (p [1], 1, &y); write (p [1], sizeof (int), &x);

8 8 GESTION D’UN TUBE (1) selon le modèle producteur-consommateur - un processus qui tente d ’écrire dans un tube plein est endormi jusqu’à la fin de cette situation - un processus qui tente de lire dans un tube insuffisamment rempli est endormi jusqu’à la fin de cette situation

9 9 GESTION D’UN TUBE (2) - un processus qui tente d’écrire dans un tube sans descripteur de lecture ouvert reçoit le signal SIGPIPE (met fin au processus par défaut) - un processus qui tente de lire dans un tube sans descripteur d’écriture ouvert ne lira que ce qui est disponible (read retourne le nombre d’octets lus)

10 10 TUBE ET HERITAGE Un tube possède des descripteurs  un processus fils hérite des descripteurs des tubes ouverts par son père  un tube permet donc une communication père - fils

11 11 Exemple int r, p [2]; pipe (p); r = fork (); if (r ==0) close (p [0]); else close (p [1]); Fils p[1] Père p[0]


Télécharger ppt "1 UNIX AVANCE Yves PAGNOTTE – Janvier 2011 6 – COMMUNICATION INTER PROCESSUS : TUBES."

Présentations similaires


Annonces Google