named pipe en C

Statut
N'est pas ouverte pour d'autres réponses.
Bonjour,

je dois réaliser un programme d'envoi/réception de messages codés (en rot13).
L'envoi et la réception dois se faire grâce a une paire de pipe FIFOs .

Le processus "envoi" est une boucle infinie qui lit les messages entrés par l'utilisateur, les encodent et les écris dans le FIFO d'envoi.
Le processus "reception" récupère les messages dans le FIFO, les décodent, et les affichent a l'écran.

Le noms des FIFOs ne peuvent pas être codés en dur dans le programme, vu que, comme l'illuste la figure, pour que les deux instances du programme communiquent le role de chaque FIFO est inversé pour chaque instance. Il faut passer le nom des FIFOs comme argument du programme.



Voila, je vous avoue que pour moi c'est pas très clair dans la manière de codé, je ne sais vraiment pas par ou commencer... j'ai donc besoin d'aide.

Le codage en rot13 est facil, je l'ai réalisé comme suit :

#include <stdio.h>
#include <string.h>
#include <stdlib.h>
#include <ctype.h>

void rot13(char * str);

int main() {
char str[256];

printf("Tapez une phrase : ");
fgets(str, sizeof str, stdin);

printf("\n%s\n", str);

rot13(str);
printf("Text code : ");
fputs(str, stdout);
fputc('\n', stdout);
fflush(stdout);

rot13(str);
printf("Text decode : ");
fputs(str, stdout);
fputc('\n', stdout);
fflush(stdout);

}

void rot13(char * str) {
static char const * const letters = "ABCDEFGHIJKLMNOPQRSTUVWXYZABCDEFGHIJKLM"
"abcdefghijklmnopqrstuvwxyzabcdefghijklm";
int i = 0;

while( str != 0 ) { char * found = strchr( letters, str );
if( found != NULL )
str = *(found + 13);

i++;
}
}


J'ai besoin d'aide pour le pipe, je ne vois pas vraiment comment avancer.
 

real007

Dad of Twins
si je comprend bien ton truc tu voudrais avoir les algo pour insérer et lire dans ton fifo?
 
1er
OP
the_quent1

the_quent1

Elite
Oui, enfin des explications parce que je ne vois vraiment pas comment faire :s (premier fois que je fais ce genre de programme)
 
Statut
N'est pas ouverte pour d'autres réponses.
Haut