RISOLTO!!! però mi stampa solo e sempre 5 caratteri ma non capisco il perchè qualcuno può aiutarmi vi prego
p.s ho visto un altro errore se vado a stampare su un file mi scrive simboli strani perchè?
#include <sys/types.h>
#include<sys/stat.h>
#include <fcntl.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
int main(int argc,char **argv){
if(argc <3){
perror("errore nel passaggio di parametri");
exit(1);
}
pid_t pid[2];
char buffer[11],buffer2[11];
int i,filedes[2],filedes2[2],fd,fd2,fd3,flag,status,n,m;
if((fd=open(argv[1],O_RDONLY))<0){
perror("errore di apetura primo file");
exit(1);
}
if((fd2=open(argv[2],O_RDONLY))<0){
perror("errore di apertura del sodecondo file");
exit(1);
}
if((fd3=open(argv[3],O_WRONLY))<0){
perror("errore di apertura del terzo file");
exit(1);
}
if(pipe(filedes)<0){
perror("errore nella prima pipe");
exit(1);
}
if(pipe(filedes2)<0){
perror("errore nella seconda pipe");
exit(1);
}
for(i=0;i<2;i++){
pid[i]=fork();
if(pid[i]<0){
perror("errore di fork");
exit(1);
}
if(pid[i]==0){
printf("INIZIO PROCESSO FIGLIO %d \n",i);
if(i==0){
close(filedes[0]);
if((read(fd,buffer,10))<0){
perror("non riesco a leggere il primo file");
exit(1);
}
if((write(filedes[1],buffer,10))<0){
perror("errore di scrittura sulla pipe");
exit(1);
}
}
else{
close(filedes2[0]);
if((read(fd2,buffer2,10))<0){
perror("errore di lettura nel secondo file");
exit(1);
}
if((write(filedes2[1],buffer2,10))<0){
perror("errore di scrittura sulla seconda pipe");
exit(1);
}
}
printf("FINE PROCESSO FIGLIO %d\n",i);
exit(0);
}
else{
wait(&status);
printf("INIZIO PROCESSO PADRE %d \n",i);
if(i==1){
close(filedes[1]);
close(filedes2[1]);
for(i=0;i<10;i++){
read(filedes[0],buffer,1);
read(filedes2[0],buffer2,1);
printf("%c",buffer[0]);
printf("%c",buffer2[0]);
}
}
printf("FINE PROCESSO PADRE %d \n",i);
}
}
exit(0);
}