====== Processus (4 heures) ====== Le but de ce TD est d'appréhender la manipulation de processus par le biais de la librairie standard. ==== Q.1 - Création de processus ==== Que font chacun de ces deux programmes ? #include main() { int i; for (i=1;i<=8;i++) fork(); printf("%d\n",i); } #include int i=10; f(){ printf("%d\n",i++); } g(){ f();fork();f(); } main(){ g();g(); } ==== Q.2 - Duplication de l'espace mémoire ==== Que font chacun de ces deux programmes ? #include main() { printf("Bonjour\n"); if (fork()) printf("Papa\n"); else printf("Maman\n"); } #include main() { printf("Bonjour "); if (fork()) printf("Papa\n"); else printf("Maman\n"); } ==== Q.3 - Apprenti sorcier ==== Que font chacun de ces deux programmes ? #include main() { while (1) { if (fork()) break; else { putchar('.'); continue; } putchar(':'); } } #include main() { while (1) { if (!fork()) break; else { putchar('.'); continue; } putchar(':'); } } ==== Q.4 - Attente de terminaison ==== Ecrire un programme qui crée ''N'' processus fils qui affichent les entiers de 1 à ''N'' (chaque processus fils n'affichant qu'un seul entier). Synchroniser les processus pour garantir que l'affichage se fait dans l'ordre croissant. ==== Q.5 - Redirection d'entrée standard ==== Ecrire un programme ''C'' qui lit sur l'entrée standard ''stdin'' un nom de fichier puis qui redirige l'entrée standard sur ce fichier, y lit le contenu et l'affiche sur la sortie standard, et recommence le tout (à partir de l'entrée au clavier du nom de fichier) indéfiniment. ==== Q.6 - Tube ==== Même exercice que précédemment, mais le flux de sortie est redirigé vers un autre processus qui passe toute minuscule en majuscule. Attention, le message demandant à chaque itération d'entrer le nom de fichier doit s'afficher sur l'écran ; et la lecture du nom sur le clavier. ==== Q.7 - L'immortel ==== Ecrire un programme qui compte le nombre de fois que la séquence ''Control-C'' est entrée au clavier. Une précision : ''Control-C'' poste le signal ''SIGINT'' au processus à l'avant-plan. Comment arrêter ce programme ?