/* * Programme simulant la gestion d'une imprimante */ #include #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* thread_function(void* arg) { char* nomFic = arg; impression(nomFic); free(nomFic); return 0; } void attenteImpression(){ char *nomFic = NULL; pthread_t tid; do { nomFic = malloc(sizeof(char)*80); if(!nomFic) { perror("cannot allocate memory"); exit(EXIT_FAILURE); } printf("Nom du fichier a imprimer (taper '0' pour terminer) ? "); scanf("%s", nomFic); if (strcmp(nomFic,"0") == 0){ break; } int ret = pthread_create(&tid, NULL, thread_function, nomFic); if(ret != 0) { perror("pthread_creat failed"); exit(EXIT_FAILURE); } }while (1); printf("Au revoir\n"); } int main(){ attenteImpression(); return EXIT_SUCCESS; }