/* * Programme simulant la gestion d'une imprimante * Dans cette version, on forke un enfant a chaque demande d'impression */ #include #include #include #include #include void impression(char *nomFic){ printf("Debut d'impression de \"%s\"...\n", nomFic); sleep(5); /* Simule la lenteur de l'impression */ printf("...Fin d'impression de \"%s\"...\n", nomFic); } void attenteImpression(){ char nomFic[80]; pid_t pid; do { printf("Nom du fichier a imprimer (taper '0' pour terminer) ? "); scanf("%s", nomFic); if (strcmp(nomFic,"0") == 0){ break; } pid = fork(); switch(pid){ case -1: perror("echec de fork"); exit(EXIT_FAILURE); case 0: /* Enfant */ impression(nomFic); exit(EXIT_SUCCESS); default: /* parent */ break; } }while (1); printf("Au revoir\n"); } int main(){ attenteImpression(); return EXIT_SUCCESS; }