Bonjour,
Je cherche à comprendre les communications inter-processus avec les pipe nommés.
Je fais face à un problème : si j'ai bien compris la lecture est bloquante. Pourtant dans mon code, les instructions après read(), dans le processus fils lecteur, sont exécutées.
Mais moi je voudrais que read soit bloquant...
Merci d'avance pour votre aide !
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 <stdlib.h> #include <fcntl.h> #include <unistd.h> #include <errno.h> #include <string.h> #include <sys/stat.h> #include <sys/types.h> #define TUBE "f.fifo" int main() { char msg[256]; int tube, taille; mkfifo(TUBE, S_IRWXU | S_IRWXG | S_IRWXO); if (fork() == 0)// Processus lecteur { printf("Je suis le fils de pid %d\n", getpid()); tube = open(TUBE, O_RDONLY); printf("Lecture dans le pipe\n"); printf("Appelle de read\n"); taille = read(tube, (void*)msg, 256); printf("msg : %s\n", msg); printf("Taille de ce qui a ete lu : %d\n", taille); } else { // Processus ecrivain printf("Je suis le pere de pid %d\n", getpid()); tube = open(TUBE, O_WRONLY); } return EXIT_SUCCESS; }
Partager