L3

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 1024

int 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>

} }