Cos'ha di inesatto questo programmino??
C'è un processo padre che legge dei valori da input e a seconda se sono pari o dispari li manda alla pipe dei pari o alla pipe dei dispari.codice:#include <stdio.h> #include <stdlib.h> #define N_FIGLI 2 int n=0; void pari(int ppari[]){ int buffer; //printf("Entro nella funzione pari\n"); while(n>=0){ read(ppari[0],&buffer,sizeof(buffer)); printf("Il figlio pari ha letto : %d",buffer); } exit(1); } void dispari(int pdispari[]){ int buffer; //printf("Entro nella funzione dispari\n"); while(n>=0){ read(pdispari[0],&buffer,sizeof(buffer)); printf("Il figlio dispari ha letto : %d",buffer); } exit(2); } int main(){ int buffer,ppari[2],pdispari[2],pid=10,i,status,m=0; if(pipe(ppari)==-1) {printf("Errore nella creazione della pipe");exit(1);} if(pipe(pdispari)==-1){printf("Errore nella creazione della pipe");exit(1);} for(i=0;i<N_FIGLI;i++){ if(pid>0){ pid=fork(); //printf("Pid = %d && i=%d\n",pid,i); if(pid==0 && i==0){ pari(ppari); }else if(pid==0 && i==1){ dispari(pdispari); } } }//for if(pid>0){ while(n>=0){ printf("Inserisci un valore : "); scanf("%d",&n); if((n%2)==0) {write(ppari[1],&n,sizeof(n));} else write(pdispari[1],&n,sizeof(n)); } kill(pid,1); kill((pid-1),1); wait(&status); } return 1; }
Il problema è che le due pipe di lettura non ricevono nulla![]()




Rispondi quotando
