/*
• Scrivere un programma C che:
• Crea un processo figlio, stampa il messaggio “In attesa” ed attende la terminazione del figlio.
• Il figlio esegue il comando “ls -‐l” • Quando il figlio termina, il padre visualizza il messaggio “nuovo figlio”
e crea un secondo processo figlio. •
Il secondo figlio aspetta per 5 secondi, stampa a video un messaggio e termina.
• Quando il processo figlio termina, il padre stampa a video il pid del processo terminato.
*/
#include <stdio.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/wait.h>
int main(void) {
int x;
pid_t pid;
pid_t pid2;
pid = fork();
if(pid == 0) {
execl("/bin/ls", "ls", "-l", NULL);
} else {
printf("In attesa..");
waitpid(pid, NULL, 0);
printf("Mio figlio %d è terminato, nuovo figlio\n",pid);
fflush(stdin);
pid2 = fork();
if(pid2 == 0) {
sleep(5);
printf("Ciao sono il secondo figlio\n");
return 0;
} else {
waitpid(pid2, NULL, 0);
printf("E' morto anche il mio secondo bambino, aveva pid = %d\n",pid2);
}
}
return 0;
}