Outils pour utilisateurs

Outils du site


td_-_processus

Ceci est une ancienne révision du document !


Processus (4 heures)

Le but de ce TD est d'appréhender la manipulation de processus par le biais de la librairie standard.

Création de processus

Que font chacun de ces deux programmes ?

#include <stdio.h>
 
main()
{
  int i;
  for (i=1;i<=8;i++)
    fork();
  printf("%d\n",i);
}
#include <stdio.h>
 
int i=10;
 
f(){ printf("%d\n",i++); }
 
g(){ f();fork();f(); }
 
main(){ g();g(); }

Duplication de l'espace mémoire

Que font chacun de ces deux programmes ?

#include <stdio.h>
 
main() {
  printf("Bonjour\n");
  if (fork())
    printf("Papa\n");
  else
    printf("Maman\n");
}
#include <stdio.h>
 
main() {
  printf("Bonjour ");
  if (fork())
    printf("Papa\n");
  else
    printf("Maman\n");
}

Apprenti sorcier

Que font chacun de ces deux programmes ?

#include <stdio.h>
 
main() {
   while (1) {
      if (fork())
          break;
      else {
          putchar('.');
          continue;
      }
      putchar(':');
  }
}
#include <stdio.h>
 
main() {
   while (1) {
      if (!fork())
          break;
      else {
          putchar('.');
          continue;
      }
      putchar(':');
  }
}

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.

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.

Pipe

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.

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 ?

td_-_processus.1552473661.txt.gz · Dernière modification : 2019/03/13 10:41 de gilles