#include #include #include #include #include #include int main (int argc, char **argv) { int stato, atteso, pid, exit_s; char st[80]; for (;;) /* ciclo infinito */ { printf("inserire il comando da eseguire:\n"); scanf("%s", st); if ((pid = fork()) < 0) { perror("fork"); exit(1);} if (pid == 0) { /* FIGLIO: esegue i comandi */ execlp(st, st, (char *)0); perror("errore"); exit (errno); } else { /* PADRE */ atteso=wait (&stato); /*attesa figlio: sincronizzazione */ exit_s = stato >> 8; /* selezione degli 8 bit piu' significativi */ exit_s &= 0xFF; printf("Per il figlio %d lo stato di EXIT e` %d\n", atteso, exit_s); printf ("eseguire altro comando? (si/no) \n"); scanf ("%s", st); if (strcmp(st, "si")) exit(0); } } }