#include "stdio.h"
#include "stdlib.h"
#include "errno.h"
#include "unistd.h"
int main(){
//Aqui se define STDIN como el elemento 0 del arreglo pfds
//Aqui se define STDOUT como el elemento 1 del arreglo pfds
//Aqui se define STDERR como el elemento 2 del arreglo pfds
int pfds[2];
// Establecemos un buffer de 30 bytes
char buf[30];
//Creamos la tuberia
if (pipe(pfds) == -1) {
perror("pipe");
exit(1);
}
printf("Escribiendo sobre el file descriptor de STDOUT");
write(pfds[1], "Edwin", 5);
printf("Lellendo sobre el file descriptor de STDIN");
read(pfds[0], buf, 5);
printf("Valor transportado en nuestra tuberia: \"%s\"n", buf);
}

Basicamente, una llamada a pipe() retorno un par de file descriptors.
