transfert de chaine de caractère à l'aide de pipe
Bonjour,
Je souhaiterais faire un petit programme où le père envoie une chaine au fils, le fils la met en majuscule, la renvoie au père, et le père l'affiche.
Voici ce que j'ai fais :
Code:
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 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58
|
#include <ctype.h>
#include <stdio.h>
#include <sys/types.h>
#include <sys/wait.h>
#include <stdlib.h>
#include <unistd.h>
#include <errno.h>
int pfd01[2], pfd10[2];
void erreur(char *message)
{
fprintf(stderr,"Erreur: %s\terrno=%d\n", message,errno);
exit(1);
}
void Pere()
{
int i;
char buffer[BUFSIZ]="bonjour";
char chaine[BUFSIZ];
if(close(pfd01[0])==-1) erreur("close");
if(close(pfd10[1])==-1) erreur("close");
if(write(pfd01[1], buffer, 7)==-1) erreur("write");
if(read(pfd10[0], chaine, 7)==-1) erreur("write");
for(i=0;i<7;i++)
{
printf("%c",chaine[i]);
}
}
void Fils()
{
char buffer[BUFSIZ];
int i;
if(close(pfd01[1])==-1) erreur("close");
if(close(pfd10[0])==-1) erreur("close");
if(read(pfd01[0], buffer, 7)==-1) erreur("write");
for(i=0;i<7;i++)
{
buffer[i]=toupper(buffer[i]);
}
if(write(pfd10[1], buffer, 7)==-1) erreur("write");
exit(0);
}
int main()
{
if(pipe(pfd01)==-1) erreur("pipe");
if(pipe(pfd10)==-1) erreur("pipe");
switch(fork())
{
case -1 : erreur("fork");
case 0 : fils();
}
pere();
} |
Seulement j'ai une erreur à la compilation.
Pourriez-vous me dire d'où vient-elle ?
Merci d'avance !