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;
#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;
}
Qualcuno mi puo aiutare?? Grazie mille!!