Les shells programmes en c font ceci.
D'abors un appel a pipe qui retourne deux descripteur de fichiers.
Ensuite un appel a fork. Pour le ls. Le fils ferme stdout et dup l'entre du pipe sur le descripteur 1. Ensuite I'll ferme le descripteur de la sortie du pipe et de l'entree (I'll a fait la copie necessaire). Finalement, le fils remplis un tablpeau de char et fait un appel a exec.
Le pere fait un deuxieme appel a fork et le fils fait quelquechose de similaire pour more (en remplacant l'entree cette fois ci)
Finalement le pere attends ses deux fils.