Entender los mecanismos básicos de unix para ejecutar y combinar programas.
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();
}
}