•     
  •     
  •     
  • Chuletas
  • News
  • PVPC
  • Se explica cómo usar la entrada/salida estándar de un programa que ejecutamos desde el nuestro

    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í