PDA

Visualizza la versione completa : Esercizio di programmazione pipe in unix & serie di fibonacci..


chaka
19-07-2009, 17:52
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!!

NyXo
19-07-2009, 17:58
penso sia tecnico.

comunque io avrei optato per il diagramma di Reil-Hosen, che per problemi di questo tipo e' sempre ottimo, anche se un po' "scolastico"

chaka
19-07-2009, 18:13
if(pr<0)
fprintf(stderr, "Error generating process\n");
else if(pr>0) // prima era < !!

ant_alt
19-07-2009, 18:26
dý la veritÓ che domani hai l'esame :stordita:

Mick The Rabbit
19-07-2009, 18:29
Originariamente inviato da NyXo
penso sia tecnico.

comunque io avrei optato per il diagramma di Reil-Hosen



sono anni che non si usa, aggiornati...

ant_alt
19-07-2009, 18:33
Originariamente inviato da Mick The Rabbit
sono anni che non si usa, aggiornati...

io non l'avevo mai sentito e non c'Ŕ su wikipedia che diavolo Ŕ:master:

chaka
19-07-2009, 18:40
No non ho nessun esame, studio autodidatta!!

ant_alt
19-07-2009, 18:43
Originariamente inviato da chaka
No non ho nessun esame, studio autodidatta!!

in compenso domani l'esame ce l'ho io :cry: ..ora che ti chiudono il thread riaprilo nella sezione giusta e gli do un'occhiata

chaka
19-07-2009, 18:46
Originariamente inviato da ant_alt
in compenso domani l'esame ce l'ho io :cry: ..ora che ti chiudono il thread riaprilo nella sezione giusta e gli do un'occhiata

Scusa ma non ti ho capito bene..

ant_alt
19-07-2009, 18:59
Originariamente inviato da chaka
Scusa ma non ti ho capito bene..

leggi qui
http://forum.html.it/forum/showthread.php?s=&threadid=973887

riapri il thread qui
http://forum.html.it/forum/forumdisplay.php?s=&forumid=31

Loading