Licence mathématiques et informatique 3ème année

TD de programmation système n° 6

pipe(), SIGPIPE

 
  1. En utilisant fork(), créer deux processus communiquant par un tube (lui-même créé avec l'appel système pipe()). Le père lira depuis l'entrée standard et écrira dans le tube. Le fils lira depuis le tube et écrira sur la sortie standard en mettant tout en majuscules (en utilisant la fonction toupper(), par exemple).
  2. Terminer (si nécessaire) la section Co-processus du TD 5.
  3. Reprendre la question 1. Cette fois, c'est le père qui écrit (octet par octet, par exemple) et le fils qui lit. Le fils devra simplement répéter sur la sortie standard ce qu'il a lu, mais en s'arrêtant au bout de 10 caractères (comme le programme "head -c10"). Ensuite, le fils termine son exécution. On souhaite aussi que le père termine lorsque le fils termine. Plusieurs solutions sont possibles :
  4. Reprendre la précédente en utilisant un tube nommé (créé par mkfifo). Cette fois, il n'y a ni père ni fils, mais deux processus lancés à partir du shell, un écrivant et l'autre lisant. Etudier l'ordre dans lequel on doit lancer ces deux processus selon le mode d'ouverture.