Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14
  1. #1
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    30

    Esercizio di programmazione pipe in unix & serie di fibonacci..

    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!!

  2. #2
    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"

  3. #3
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    30

    piccola correzzione

    if(pr<0)
    fprintf(stderr, "Error generating process\n");
    else if(pr>0) // prima era < !!

  4. #4
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    dì la verità che domani hai l'esame

  5. #5
    Originariamente inviato da NyXo
    penso sia tecnico.

    comunque io avrei optato per il diagramma di Reil-Hosen


    sono anni che non si usa, aggiornati...
    l'ignoranza è benedetta

  6. #6
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803
    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:

  7. #7
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    30

    Ahahah

    No non ho nessun esame, studio autodidatta!!

  8. #8
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    Re: Ahahah

    Originariamente inviato da chaka
    No non ho nessun esame, studio autodidatta!!
    in compenso domani l'esame ce l'ho io ..ora che ti chiudono il thread riaprilo nella sezione giusta e gli do un'occhiata

  9. #9
    Utente bannato
    Registrato dal
    Apr 2009
    Messaggi
    30

    ¿?

    Originariamente inviato da ant_alt
    in compenso domani l'esame ce l'ho io ..ora che ti chiudono il thread riaprilo nella sezione giusta e gli do un'occhiata
    Scusa ma non ti ho capito bene..

  10. #10
    Utente bannato
    Registrato dal
    Feb 2004
    Messaggi
    2,803

    Re: ¿?

    Originariamente inviato da chaka
    Scusa ma non ti ho capito bene..
    leggi qui
    http://forum.html.it/forum/showthrea...hreadid=973887

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

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.