Bonjour,
J'ai un problème avec ce programme qui manipule des pipes non nommés!
En fait la lecture ne marche pas. A l'exécution, j'ai read(pipe) "success".
Est-que quelqu'un pourrait bien m'expliquer pourquoi?
Merci d'avance.
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
int main (void)
{
int tube[2];
pid_t pid = fork();
if (pid == -1){
perror("fork");
return 1;
}
if (pipe(tube) == -1){
perror("pipe");
return 1;
}
if (pid == 0){
// fils
printf("on est dans le fils\n");
int reception;
// le fils n'Ècrit pas
if (close(tube[1]) == -1){
perror("close");
return 1;
}
if (read(tube[0], &reception, sizeof(reception)) != sizeof(reception)){
perror("read(pipe)");
return 1;
}
printf("Fils a lu : %d\n", reception);
// libÈration des resources
if (close(tube[0]) == -1){
perror("close");
return 1;
}
}
else{
printf("on est dans le pere\n");
int emission;
// le pere ne lit pas
if (close(tube[0]) == -1){
perror("close");
return 1;
}
emission = 51;
if (write(tube[1], &emission, sizeof(emission)) != sizeof(emission)){
perror("write(pipe)");
return 1;
}
printf("Pere a ecrit : %d\n", emission);
// libÈration des resources
if (close(tube[1]) == -1){
perror("close");
return 1;
}
}
return 0;
}
Partager