informatica:sol:laboratorio19:esercitazionib:esercitazione8
Differenze
Queste sono le differenze tra la revisione selezionata e la versione attuale della pagina.
| Prossima revisione | Revisione precedente | ||
| informatica:sol:laboratorio19:esercitazionib:esercitazione8 [10/04/2019 alle 13:11 (7 anni fa)] – creata Massimo Torquati | informatica:sol:laboratorio19:esercitazionib:esercitazione8 [16/04/2019 alle 05:34 (7 anni fa)] (versione attuale) – Massimo Torquati | ||
|---|---|---|---|
| Linea 1: | Linea 1: | ||
| ====== Esercitazione 8 ====== | ====== Esercitazione 8 ====== | ||
| - | |||
| ===== Esercizio 1 ===== | ===== Esercizio 1 ===== | ||
| - | Scrivere un programma C che appena attivato va immediatamente in background, attende per X secondi (eseguendo il programma | + | Implementare utilizzando le chiamate di sistema |
| + | < | ||
| + | mycat file1 [fileN]. | ||
| + | </ | ||
| ===== Esercizio 2 ===== | ===== Esercizio 2 ===== | ||
| + | |||
| + | Scrivere un programma C che appena attivato va immediatamente in background, attende per X secondi (eseguendo il programma ''/ | ||
| + | |||
| + | ===== Esercizio 3 ===== | ||
| Un processo //zombie// è un processo terminato ma che ancora possiede delle risorse (' | Un processo //zombie// è un processo terminato ma che ancora possiede delle risorse (' | ||
| Scrivere un programma che prende un intero N come argomento e crea N processi zombies. Lanciare il programma in background e visualizzare gli zombies con il comando bash '' | Scrivere un programma che prende un intero N come argomento e crea N processi zombies. Lanciare il programma in background e visualizzare gli zombies con il comando bash '' | ||
| + | |||
| + | ===== Esercizio 4 ===== | ||
| + | |||
| + | Scrivere un programma C che prende come argomento un intero N>1. L' | ||
| + | < | ||
| + | ./family 4 | ||
| + | ---- 20894: creo un processo figlio | ||
| + | --- 20895: creo un processo figlio | ||
| + | -- 20896: creo un processo figlio | ||
| + | - 20897: creo un processo figlio | ||
| + | 20898: sono l' | ||
| + | 20898: terminato con successo | ||
| + | - 20897: terminato con successo | ||
| + | -- 20896: terminato con successo | ||
| + | --- 20895: terminato con successo | ||
| + | ---- 20894: terminato con successo | ||
| + | |||
| + | </ | ||
| + | |||
| + | ===== Esercizio 5 ===== | ||
| + | |||
| + | Completare il codice seguente in modo che il programma calcoli i primi 13 numeri di Fibonacci utilizzando per ogni chiamata '' | ||
| + | |||
| + | < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | #include < | ||
| + | |||
| + | /* | ||
| + | * Calcola ricorsivamente il numero di Fibonacci dell' | ||
| + | * La soluzione deve forkare un nuovo processo che esegue una sola | ||
| + | * chiamata di ' | ||
| + | * Se doPrint e' 1 allora la funzione lo stampa, altrimenti il | ||
| + | * numero calcolato va passato al processo padre. | ||
| + | */ | ||
| + | static void doFib(int n, int doPrint); | ||
| + | |||
| + | int main(int argc, char *argv[]) { | ||
| + | // questo programma puo' calcolare i numeri di Fibonacci solo fino a 13. | ||
| + | const int NMAX=13; | ||
| + | int arg; | ||
| + | | ||
| + | if(argc != 2){ | ||
| + | fprintf(stderr, | ||
| + | return EXIT_FAILURE; | ||
| + | } | ||
| + | arg = atoi(argv[1]); | ||
| + | if(arg < 0 || arg > NMAX){ | ||
| + | fprintf(stderr, | ||
| + | return EXIT_FAILURE; | ||
| + | } | ||
| + | doFib(arg, 1); | ||
| + | return 0; | ||
| + | } | ||
| + | </ | ||
| + | |||
| + | |||
| + | |||
| + | |||
| + | |||
informatica/sol/laboratorio19/esercitazionib/esercitazione8.1554901903.txt.gz · Ultima modifica: 10/04/2019 alle 13:11 (7 anni fa) da Massimo Torquati
