Programando con tuberías
Esto está sacado de The Linux Programmer's Guide
Cuando se crea una tubería con pipe() se obtienen descriptores de fichero de entrada y salida de la tubería. Haciendo un fork(), uno de los procesos utiliza la entrada y otro la salida.
Luego, uno de ellos usa dup2() para duplicar el descriptor de la tubería en su entrada o salida estándar y ejecuta con execXXX() al programa con el que se quiere establecer la tubería (el programa que se ejecuta así hereda los descriptores de fichero estándar del padre).
Tricks:
- hay que cerrar cuanto antes el descriptor que no se utiliza en cada lado y forzosamente el que se utiliza una vez finalizado su uso para que no haya problemas.
- si se necesita acceso tanto a la entrada como a la salida del programa ejecutado, hay que crear dos tuberías, lógicamente, quedandose cada uno de los programas con un input que recoge la salida del otro y un output que alimenta a la entrada del otro, según interese.
Puede verse un ejemplo de todo esto aquí