Esercizio 1 Scrivete un programma C "creaproc" che crea (mediante fork) il numero di processi specificati in input. ad esempio: $> creaproc 7 crea 7 nuovi processi forkandosi 7 volte. ogni processo figlio deve stampare su terminale il proprio PID e terminare. Il processo padre deve aspettare la terminazione di tutti i figli (con una wait per ogni figlio) e terminare anche lui. Attenzione: non provate $> creaproc 700 altrimenti intasate il sistema di processi!!!!
alcuni consigli: il compilatore C per compilare il programma: $> gcc creaproc.c crea un eseguibile di nome a.out $> gcc creaproc.c –o creaproc crea un eseguibile di nome "creaproc"
programmi C con argomenti main (int argc, char **argv) { ... } OPPURE: main (argc, argv) int argc; char *argv[ ];
programmi C con argomenti argc indica il numero di "parole" inserite sulla riga di comando argv e' un vettore di puntatori alle stringhe della riga di comando. Ad esempio, nel programma C myprog lanciato dal prompt dei comandi con i seguenti argomenti: $>myprog cinque 45 si avrebbe: argc = 3 argv[0] = "myprog" argv[1] = "cinque" argv[2] = "45"
programmi C con argomenti Osservate in particolare il secondo argomento: argv[2] = "45" E' anch'esso una stringa, e come tale viene trattato all'interno di myprog. E se vogliamo usarlo come un intero? Dobbiamo convertirlo. Il modo piu' comodo per convertire nel formato voluto gli argomenti in input e' la sscanf: int numero; sscanf(argv[2],"%d",&numero); printf("\n secondo argomento = %d\n",numero);