Ma non riesco a capire... anche tu ricorri alla memoria condivisa... ma è per caso proprio un esercizio la cui traccia lo richiede? Cioè è davvero un abuso XDin effetti come dice yuyevon è un pò inutile usare la memoria condivisa in questo caso.
Comunque amici i processi vanno terminati... a meno che non amiamo programmarci delle fork bomb ;Dcodice:#include <stdio.h> #include <stdlib.h> #include <string.h> #include <unistd.h> #include <sys/types.h> #include <fcntl.h> #include <errno.h> int fibo(int n) { int i, F1 = 1, F2 = 0, ris; if ( n < 2 ) return n; for ( i = 2 ; i <= n ; i++ ) { ris = F1 + F2; F2 = F1; F1 = ris; } return ris; } int main(void) { int fd[2], n, num = 0; pid_t pid; pipe(fd); if ( ( pid = fork() ) < 0 ) { fprintf(stderr, "Errore nella creazione del processo: %s\n", strerror(errno)); exit(errno); } if (pid == 0) { close(fd[1]); while ( read(fd[0], &n, sizeof(int)) ) printf("%d\n", n); close(fd[0]); exit(0); } else { close(fd[0]); while (num < 10) { num++; n = fibo(num); write(fd[1], &n, sizeof(int)); } close(fd[1]); } exit(0); }
Inoltre sconsiglio vivamente l'uso dell'algoritmo di Fibonacci ricorsivo semplice perché
http://forum.html.it/forum/showthrea...ight=fibonacci

Rispondi quotando