Questa è una vecchia versione del documento!
Esercitazione 8
Esercizio 1
Scrivere un programma C che appena attivato va immediatamente in background, attende per X secondi (eseguendo il programma /bin/sleep
) dove X e' l'argomento del programma e poi stampa il pid, il pid del padre e quindi termina.
Esercizio 2
Un processo zombie è un processo terminato ma che ancora possiede delle risorse ('pid' e PCB) che servono al processo padre per leggere lo exit status del processo figlio.
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 ps -A -ostat,pid,ppid | grep Z
.
Esercizio 3
Scrivere un programma C che prende come argomento un intero N>1. L'intero N rappresenta il numero di processi figli che devono essere creati in totale. I processi vanno creati come segue: il processo main stampa il suo pid e crea un figlio attendendone quindi la sua terminazione, il processo figlio a sua volta stampa il suo pid e crea un altro figlio attendendone la terminazione e cosi' via fino ad ottenere N processi figli in tutto. L'output formattato che si richiede che venga stampato sullo standard output e' il seguente:
./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'ultimo discendente 20898: terminato con successo - 20897: terminato con successo -- 20896: terminato con successo --- 20895: terminato con successo ---- 20894: terminato con successo