:: Enseignements :: ESIPE :: E4INFO :: 2014-2015 :: Programmation système en C ::
[LOGO]

pipe(), dup() et dup2()


Exercice 1 - Tentative de détournement, à mains nues

Écrire un programme qui redirige la sortie standard vers un fichier, puis effectue un "ls" vers ce fichier. Il faut donc ouvrir ce fichier avec open(), puis utiliser dup2() afin que les accès ultérieurs à la sortie standard se fassent sur le fichier. Ensuite, on peut faire un execlp() pour lancer ls -l, et l'affichage se fera vers le fichier.

Exercice 2 - Tentative de détournement, à la fourchette

Exercice 3 - Il est passé par ici, il repassera par là

En utilisant fork(), créer deux processus communiquant par un tube (lui-même créé avec l'appel système pipe()). Le fils lira depuis l'entrée standard et écrira dans le tube les caractères mis en majuscules avec toupper(). Le père lira depuis le tube et écrira sur la sortie standard.

Exercice 4 - Le fils rationne et se suicide; le père en meurt de chagrin

Reprendre l'exercice précédent. 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 la commande "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: