Sujet
Écrire un programme en C qui crée deux processus communiquant par tube. Le premier processus lit un fichier donné en paramètre, le second processus affiche le contenu du fichier.
#include <stdlib.h> #define MAX 1024int main(int argc, char **argv) { int pid, T[2], n, i; char tampon[MAX];
if (pipe(T) == -1) { perror("Erreur de pipe"); exit(1); }
if (argc != 3) { perror("Nombre d'arguments incorrect"); exit(1); }
pid = fork();
if (pid < 0) { perror("Erreur lors de la creation du processus"); exit(1); }
if (pid == 0) { close(T[0]);
<span class="k">while</span> <span class="p">(</span><span class="n">n</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">tampon</span><span class="p">,</span> <span class="n">MAX</span><span class="p">))</span> <span class="n">write</span><span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">1</span><span class="p">],</span> <span class="n">tampon</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span>
} else { close(T[1]);
<span class="k">while</span> <span class="p">(</span><span class="n">n</span> <span class="o">=</span> <span class="n">read</span><span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">],</span> <span class="n">tampon</span><span class="p">,</span> <span class="n">MAX</span><span class="p">))</span> <span class="n">write</span><span class="p">(</span><span class="n">argv</span><span class="p">[</span><span class="mi">2</span><span class="p">],</span> <span class="n">tampon</span><span class="p">,</span> <span class="n">n</span><span class="p">);</span> <span class="n">close</span><span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">0</span><span class="p">]);</span> <span class="n">close</span><span class="p">(</span><span class="n">T</span><span class="p">[</span><span class="mi">1</span><span class="p">]);</span>
} }