slt,
j'ai un problème avec des fifo. j'essaye d'ouvrir un fifo en mode bloquant dans une fonction. dans une autre fonction, je ferai un while(true) dans lequel il y aura la lecture du fifo et traitement des données.
Le problème est que mon programme bloque lors de l'ouverture (le fifo est bien créé car status vaut 0). Voici le code de la fonction qui permet l'ouverture du fifo.
Est-ce que quelqu'un a une idée du problème et du moyen de le résoudre?
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 void createAndOpenFifo(){ pathfifo = malloc(sizeof(char)*7+sizeof(pid_t)); int status = mkfifo(pathfifo,0666); if(status<0){ perror("It's impossible to create a fifo."); exit(EXIT_FAILURE); } if((fifo=open(pathfifo,O_RDONLY))<0){ perror("Error while opening the fifo."); exit(EXIT_FAILURE); } }
Merci d'avance
Note: le fifo doit etre bloquant pour la lecture car les données viennent d'un autre processus et que fatalement on ne peut pas etre certain que le fifo soit tjs plein
Partager