Forum di AAC   |      Messaggi privati   |      English



ArcadiA Club
ArcadiA Club




Home Page   Home Page
programmazione.htm   Programmazione - FORUM sezione  Vai al FORUM
 
Username:
Password:
Iscriviti!  |  Recupero password



Iscriviti GRATIS, potrai navigare senza questa
fascia e accedere a contenuti esclusivi:

    E-Mail:

Password:



 

 
- Esempio di utilizzo di fork() per creare processi figli -
 
COSA SERVE PER QUESTO TUTORIAL
Download | Chiedi sul FORUM | Glossario Un compilatore C, conoscenze basiche di C (in particolare allocazione dinamica di array).
Come creare un numero non noto a compilazione di processi figli tramite fork()

CODICE SORGENTE
#include <stdio.h>       /* printf() */
#include <unistd.h>      /* fork(), getpid() */
#include <stdlib.h>      /* malloc(), exit() */
#include <sys/types.h>   /* pid_t */
#include <sys/wait.h>    /* wait() */

int main(int argc, char *argv[]) {
    int n, c1, res;
    pid_t *figli, corrente;
    
    /* 
     * Chiediamo all'utente quanti processi
     * vuole forkare.
     */
    printf("Quanti processi vuoi creare? ");
    scanf("%d", &n);

    /*
     * Allochiamo dinamicamente lo spazio necessario
     * per contenere gli ID dei processi che creeremo
     */
    figli = malloc(sizeof(int)*n);

    /*
     * Forkiamo n volte nel processo padre e facciamo
     * terminare il ciclo subito se si tratta del figlio
     * (ovvero se il risultato dell'ultima fork e' 0)
     */
    for(c1=0;c1<n && (c1==0 || figli[c1-1]!=0);c1++)
        figli[c1] = fork();
    
    /*
     * Prendiamo l'ID del processo corrente
     */
    corrente = getpid();
    if(figli[c1-1]!=0) {
        /*
         * Il padre attende la terminazione dei figli
         */
        printf("Padre (%d) - Attendo la terminazione di tutti i figli.\n", corrente);
        wait(&res);
        printf("Padre (%d) - Tutti i figli sono terminati.\n", corrente);
    } else {
        /*
         * I figli stampano un messaggio notificando la
         * propria esecuzione
         */
        printf("Figlio (%d) - Sono in esecuzione.\n", corrente);
        /*
         * Il figlio termina con esito positivo
         */
        exit(0);
    }

    return 0;
}
<< INDIETRO by VeNoM00  


Video collegati Visualizza i video di questa pagina
Visualizza video sull'argomento "fork".
Visualizza video sull'argomento "creare".
Visualizza video sull'argomento "processi".
Visualizza video sull'argomento "figli".
Visualizza video sull'argomento "c fork creare processi figli".


Dì la tua: cosa ne pensi?
Esponi il tuo punto di vista e condividilo con migliaia di persone

Oggetto nuova discussione:


Testo del messaggio:

E-Mail:

Quanto fa più dieci:




Una discussione di questa sezione

perfavore rispondente

ragazzi mi serve una mano vorrei creare un gioco bello anche come grafica e tutto solo che non so i programmi da usare non me ne frega niente se ci metto anche 1 anno se mi dato una mano è anche un bel gioco (perchè volevo creare lo slamball)

LEGGI TUTTA LA DISCUSSIONE


Risposta 1

Ciao! Credo sia meglio se chiedi nella sezione Creare videogiochi, così da rendere la discussione più visibile per chi ha la tua stessa passione. ;)

LEGGI TUTTE LE RISPOSTE

 




^ TOP  
Linkaci | Segnala errore | Invita | Stampa


pubblicità | regole | visione | diritti | ufficio stampa | donazioni | scrivici
© 1999-2012 - P.IVA 02284690035 - Grafica, layout e contenuti sono di esclusiva proprietà di ArcadiA Club.

Powered by:
Spazi pubblicitari di alto livello
 

Compra in un click! | Cerca prodotti in offerta: