7.2 La entrada y la salida estándar

En C se manejan dos flujos de datos conocidos como la entrada y la salida estándar. Estos flujos se manipulan mediante varias funciones estándar. Dos de ellas son read() y write(). Estas funciones necesitan una serie de argumentos que pueden conocerse escribiendo en el intérprete de comandos:

man 2 read  
man 2 write

En la ayuda on-line proporcionada por el comando man (de MANual), también figura el fichero cabecera que debe ser incluído (unistd.h en este caso) para la comprobación del número de argumentos y del tipo de los mismos, y una descripción del funcionamiento de las funciones. En la ayuda veremos que tanto read() como write() poseen 3 parámetros: (1) un descriptor de fichero (en inglés, file descriptor) que referencia al flujo de datos, (2) un puntero a la posición de la memoria que es usada como fuente (write()) o destino (read()) y (3) el número de bytes transferidos.

Lo interesante de usar la entrada y la salida estandares, como ya hemos dicho antes, es que podemos conectar la salida estándar de un programa a la entrada estándar de otro usando un pipe. Esto se hace mediante el símbolo |. Los pipes son canales de comunicación entre procesos buffereados lo que significa que la transferencia se produce por bloques de datos de un determinado tamaño (4 Kbytes típicamente), aunque nostros transfiramos bloques de un tamaño diferente.