Anuncios

Bienvenidos sean a este post, hoy hablaremos brevemente sobre un tema que usamos mucho pero desconocemos su uso.

Anuncios

El stream se puede resumir de la siguiente forma:

Es una secuencia de bytes transferidas en una direccion desde su origen hasta su destino.

El tinchicus
Anuncios
Anuncios

Es decir, un stream exitoso de ejecucion es cuando se realiza una compilacion correcta de nuestro codigo en un archivo, y este se inicia desde el momento que se ejecuta este programa y fluye hasta que el msmo se detiene, tomemos el caso de la consola o terminal, en este caso tenemos un stream de entrada (input) que transfiere bytes, para nosotros son caracteres, desde el teclado a la CPU, y a su vez el stream de salida de la consola transfiere bytes (caracteres) desde la memoria hasta la pantalla, por lo tanto en la pantalla disponemos de un teclado para la entrada y un monitor para la salida, por esta razon se lo considera como un stream de Entrada/Salida o I/O stream, y a su vez disponemos de dos caracteristicas para mejorarla:

  • lo que tipeemos en el teclado se pasa directamente a memoria y este es repetido en la pantalla, esto lo hace automaticamennte la terminal por nosotros
  • existe un tercer stream llamado stream de error, esto nos permite redireccionar el error de nuestro codigo a la pantalla (predeterminado), un archivo u otro dispositivo
Anuncios

Como dijimos un stream es un flujo de bytes en una direccion, por lo tanto un archivo tambien es un stream, el control del flujo es realizado por el stream en si mismo, a su vez los streams pueden tomar dos conductas: pueden tomar los bytes que estan transmitiendose y examinar los mismos antes de pasarlos al destino, y la otra es que los pasan directamente al destino sin verificarlo, si bien nosotros podemos controlar un poco el flujo de como se pasa la informacion en general esto sera hecho por las rutinas de C o bien por el sistema operativo.

Anuncios

Pasemos a hablar un poco sobre el stream, en realidad estos son apuntadores a una estructura de datos compleja llamado FILE, los cuales tienen la informacion necesaria para controlar los stream, entre los cuales incluyen al estado actual y al buffer de datos asociados, cuando comienza la ejecucion de nuestro programa, las librerias de rutinas de C crean tres stream de archivos y automaticamente los conecta nuestro programa, estos tres seran:

  • FILE* stdin, stream estandar de entrada
  • FILE* stdout, stream estandar de salida
  • FILE* stderr, stream estandar de error
Anuncios

Si bien es muy inusual que tengamos que redireccionar nuestros streams, puede suceder que no queramos trabajar con los estandar y deseemos redireccionar a un destino distinto, por ejemplo de error a un archivo de tipo log, pero en general cada funcion tiene ya asignado su stream, veamos las siguientes tablas:

Funcion salidaStream Salida
Consola I/Oprintf()stdout
Stream archivofprintf()un archivo
Stream memoriasprintf()bufer de string
Anuncios
Funcion entradaStream entrada
Consola I/Oscanf()stdin
Stream archivofscanf()un archivo
Stream memoriasscanf()buffer de string
Anuncios

Como pueden ver tanto las de entrada como las de la salida en consola I/O y memoria son muy similares, pero si observan en este caso no hablamos del stream de error, stderr, esto es debido a que esta principalmente orientado su uso con fprintf y para usarlo deberiamos hacerlo de la siguiente manera:

fprintf( stderr , "algo fallo en el programa\n" ) ;
Anuncios

Sobre esto vimos un poco al momento de trabajar con listas enlazadas en este post, donde lo utilizabamos para notificarnos cuando estaba fuera del almacenamiento, si bien en ese caso lo usamos para un caso fatal de error este no es el caso siempre sino que mas bien sera usado para problemas con eventos del programas, de ingreso y de inconvenientes, si bien de manera predeterminada esta orientada a la pantalla, a su vez tenemos la posibilidad de enviarlo a un archivo pero tambien de poder mostrar algunos errores en pantalla mientras este corriendo, por eso usaremos cada metodo de entrada o salida dependiendo de nuestra necesidad ya sea la pantalla o un archivo, no se preocupen porque en los proximos posts ahondaremos en cada uno de ellos.

Anuncios

En resumen, hoy hemos visto stream, que son, como se componen, para que sirven, como trabajan, como han sido nuestros asistentes durante todo este tiempo sin saberlo, espero les haya sido de utilidad sigueme en tumblr, Twitter o Facebook para recibir una notificacion cada vez que subo un nuevo post en este blog, nos vemos en el proximo post.

Anuncios
pp258

Donación

Es para mantenimento del sitio, gracias!

$1.50