ArcadiA Club
ArcadiA Club


AAC FORUM     AAC News     AAC Box    



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:




 





^ TOP  
Linkaci | Segnala errore | Invita | Stampa


pubblicità | privacy | visione | diritti | ufficio stampa | donazioni | scrivici
© 1999-2023 - 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: