/* FILE: status1.c */ #include #include #include #include int main () { int pid, pidFiglio, status; if ((pid = fork()) < 0) { /* fork fallita */ printf("Errore in fork\n"); exit(1); } if (pid == 0) { /* figlio */ printf("Esecuzione del figlio\n"); sleep(4); exit(5); } /* padre */ printf("Generato figlio con PID = %d\n", pid); if ((pidFiglio=wait(&status)) < 0) { printf("Errore in wait\n"); exit (1); } if (pid == pidFiglio) printf("Terminato figlio con PID = %d\n", pidFiglio); else exit(2); if (WIFEXITED(status) == 0) printf("Figlio terminato in modo involontario\n"); else { printf("Valore di WIFEXITED(status) %d\n", WIFEXITED(status)); printf("Per il figlio %d lo stato di EXIT e` %d\n", pid, WEXITSTATUS(status)); } exit(0); }