/*Soluzione compito 10 Settembre 2010*/ #include #include #include #include #include #include #include #include typedef struct { long int c1; long int c2; }str_cont; typedef int pipe_t[2]; int main(int argc, char **argv){ char stn[256]; pipe_t *p; str_cont conteggi,c; /*strutture per figli e padre*/ long int cont1,cont2; /*variabili di conteggio*/ char ch; /*appoggio carattere*/ int i,k,status,pid,n,fd; /*controllo parametri>1 e numero file pari*/ if(argc<3){ write(2,"Errore parametri\n",17); exit(1); } n=argc-1; /*allocazione dinamica*/ p=(pipe_t*)malloc(n*sizeof(pipe_t)); if (p==NULL) { write(2,"Errore allocazione dinamica\n",27); exit(1); } for(i=0;i0) { if((ch%2)==0) { if((i%2)==0) cont1++; else cont2++; } else { if(i%2) cont1++; else cont2++; } read(fd,&ch,1); /*lettura a vuoto epr saltare carattere inutile*/ } conteggi.c1=cont1; conteggi.c2=cont2; write(p[i][1],&conteggi,sizeof(conteggi)); if(conteggi.c1>conteggi.c2) exit(0); else exit(1); } } /*padre*/ /*chiude lati*/ for(i=0;i