Página siguiente Página anterior Índice general

2.4 Recubrimientos y redirecciones

Objetivos

Entender los mecanismos básicos de unix para ejecutar y combinar programas.

Especificación

Estudie y pruebe el programa siguiente, que combina dos programa externos por medio de una tubería, cuyos extremos están redirigidos convenientemente a la salida estándar de uno y a la salida estándar del otro.


/* pipeline.c */

#include <unistd.h>
#include <stdio.h>

void productor(void) {
  execlp("ps", "ps", "-ax", NULL);
  perror("execlp");
  exit(1);
}

void consumidor(void) {
  execlp("sort", "sort", "-n", NULL);
  perror("execlp");
  exit(1);
}

int main(void) {
  int pid, tubo[2];

  pipe(tubo);
  if ((pid= fork())==0) {
    close(tubo[0]); dup2(tubo[1], 1); close(tubo[1]);
    productor();
  }
  else {
    close(tubo[1]); dup2(tubo[0], 0); close(tubo[0]);
    consumidor();
  }
}




Página siguiente Página anterior Índice general