Ciao a tutti, sto stuadiando Sistemi Operativi e sono ai miei primi esercizi di creazione di processi sotto un sistema Unix...
devo far condividere unsegmento di memoria tra 2 processi tramite una pipe; il processo genitore deve creare la successione di fibonacci e il processo figlio deve stamparla..
ho impostato questo codice ma sicuramente ho bisogno di un aiuto per correggerlo;
Qualcuno mi puo aiutare?? Grazie mille!!codice:#include<stdio.h> #include<unistd.h> #include<sys/shm.h> #include<sys/stat.h> #define BUFFER_SIZE 30 int fibo(int fb); int i, x, y, buffer, fd[2]; main(int argc, char argv[]) { int segment_id, *shared_memory; const int size = 5000; if(argc<2) { printf("usage \"fibonacci\"<int value>\n"); return 0; } i = atoi(argv[1]); pid_t pr; pipe(fd); pr = fork(); if(pr<0) fprintf(stderr, "Error generating process\n"); else if(pr>0) { close(fd[0]); segment_id = shmget(IPC_PRIVATE, size, S_IRUSR | S_IWUSR); write(fd[1], buffer, BUFFER_SIZE); shared_memory = (int *)shmat(fd, NULL, 0); for(x=0;x<=i;x++) { buffer = fibo(x); sprintf(shared_memory, buffer); } close(fd[1]); } else { close(fd[1]); read(fd[0], buffer, BUFFER_SIZE); for(y=0;x<=i;y++) { printf("%d\n", buffer); } close(fd[0]); shmdt(shared_memory); } shmctl(segment_id, IPC_RMID, NULL); } fibo(int fb) { if(fb==0 || fb ==1) fb = 1; else fb = fibo(fb-1) + fibo(fb-2); return fb; }

					
					
					
						
  Rispondi quotando
						
 anche se ho visto l'argomento sfogliando pagine piu in la di dove sono arrivato..
						

