En este capítulo se revisará como se puede usar el reloj con llamadas al sistema UNIX.
Existen muchas funciones para el tiempo que las que serán consideradas
aquí -- usar las páginas de man y los listados de la biblioteca
estándar de funciones para más detalles.
El uso más común de las funciones de tiempo son:
Algunas prototipos de las funciones básicas para el tiempo son las siguientes:
t no es nulo, el valor devuelto también
se guarda en la zona de memoria a la que apunta t. En caso de error, se
devuelve ((time_t)-1) y se asigna a la variable errno un valor
apropiado.
pt, que esta declarada en <sys/timeb.h> como sigue:
struct timeb
{
time_t time; /* Segundos desde epoca, igual que `time'. */
unsigned short int millitm; /* millisegundos adicionales. */
short int timezone; /* Tiempo local medido en minutos oeste de GMT.*/
short int dstflag; /* No cero si se usa horario de verano */
};
En caso de éxito, se devuelve el tiempo transcurrido en segundos desde la
época. En caso de error, se devuelve ((time_t)-1) y se asigna a la
variable errno un valor apropiado.
time_t (long integer) que representa el tiempo de calendadrio y lo
convierte a una cadena de 26 caracteres de la forma producida por la función
asctime(). En primer lugar descompone los segundos a una estructura
tm llamando a localtime(), y entonces llama a asctime()
para convertir la estructura tm a una cadena.
tm a una cadena de 26 caracteres de
la forma:
La función asctime() regresa un apuntador a la cadena.
Como se menciono previamente, básicamente existen tres posibles usos de las funciones de tiempo.
Este es un ejemplo sencillo que ilustra las llamadas a la función tiempo en distintos momentos:
/* timer.c */
#include <stdio.h>
#include <sys/types.h>
#include <time.h>
main()
{
int i,j;
time_t t1,t2;
(void) time(&t1);
for (i=1; i<=300; ++i)
{
printf("%d %d %d\n",i, i*i, i*i*i );
for(j=0; j<1000000; j++); /* Un pequeño retardo */
}
(void) time(&t2);
printf("\n Tiempo para hacer 300 cuadrados y cubos = %d segundos\n",
(int) t2-t1);
}
Se ha visto un ejemplo similar previamente, en esta ocasión se usa la función lrand48() para generar una secuencia de números:
/* random.c */
#include <stdio.h>
#include <sys/types.h>
#include <time.h>
main()
{
int i;
time_t t1;
(void) time(&t1);
srand48((long) t1);
/* usar time en segundos para poner la semilla */
printf("5 numeros aleatorios (semilla = %d):\n",(int) t1);
for (i=0;i<5;++i)
printf("%d ", lrand48());
printf("\n\n");
}
La función lrand48() devuelve enteros largos no negativos distribuidos uniformememnte entre 0 y
.
Una función similar es la función drand48 que regresa números de doble precisión en el rango
.
srand48() pone el valor de la semilla para estos
generadores de números aleatorios. Es importante tener diferentes
semillas cuando se llame a las funciones de otra forma el mismo
conjunto números pseudo-aleatorios sera generados. La función time() siempre da una semilla única (siempre y cuando haya transcurrido por lo menos 1 segundo).