|
|||||||
|
|
|
![]() |
|
|
Strumenti |
|
|
#1 |
|
Junior Member
Iscritto dal: Jun 2017
Messaggi: 4
|
Pipe padre figli
Si puo creare una pipe unica per comunicare tra il processo padre e gli n figli creati tramite fork? Io vorrei che il processo padre creasse una pipe. Per ogni figlio che creato tramite il padre scrive dentro la pipe, il figlio legge e si distrugge. Questo per gli n figli. Con il codice qui riportato riesco a farlo solo per il primo figlio. Cioè il il padre scrive e il figlio legge dopodiche gli altri figli vedono la pipe come vuota
/*Creazione Pipe*/ if(pipe(fdpipe) == -1) { perror("pipe"); exit(1); } printf("Processo padre: pipe creata\n"); /*Creazione processi figli*/ int numeroprocessi = atoi(argv[4]); char s[10]; for(i=0;i<numeroprocessi;i++){ if((pid[i]=fork()) == 0){ dup(fdpipe[0]); close(fdpipe[1]); if(read(fdpipe[0],s,sizeof(s)) > 0){ printf("Processo figlio: ho letto il messagio: %s \n\n",s); // close(fdpipe[0]); } else if(read(fdpipe[0],s,sizeof(s)) <= 0){ printf("Processo figlio:non c'è nulla da leggere\n\n"); //close(fdpipe[0]); } } else { printf("Processo Padre: ho creato il figlio: %d\n", i); close(fdpipe[0]); printf("Ho scritto nella pipe\n"); write(fdpipe[1],t,strlen(t)+1); close(fdpipe[1]); wait(&status); ///---riapertura pipe exit(0); } } |
|
|
|
|
#2 |
|
Senior Member
Iscritto dal: Oct 2005
Messaggi: 3306
|
Scusa ma perchè hai aperto un secondo thread con lo stesso argomento del precedente?
|
|
|
|
| Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 18:56.


















