// Despertador_sis.c
//
// Escribe un mensaje tras esperar un tiempo
//
// Realizado con la llamada al sistema nanosleep
// La estrucuta timespec se utiliza para indicar
// el intervalo de tiempo a dormir con una precision de nanosegundos.
// Para mas informacion sobre nanosleep, ver man nanosleep.
//
// struct timespec {
// time_t tv_sec; /* seconds */
// long tv_nsec; /* nanoseconds */
// };
//
////////////////////////////////////////////////////////////////////////
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <time.h>
///////////////////////////////////////////
// espera dormido seg segundos
//
int esperar_tiempo( unsigned int seg )
{
struct timespec TiempoSol ,TiempoRestante;
if (seg <= 0)
return 0;
else {
TiempoSol.tv_sec = seg ;
TiempoSol.tv_nsec = 0 ;
while (nanosleep(&TiempoSol, &TiempoRestante)== -1)
{
TiempoSol.tv_sec = TiempoRestante.tv_sec;
TiempoSol.tv_nsec = TiempoRestante.tv_nsec;
}
return(seg);
}
}
int main (int argc, const char * argv[]) {
int i;
if (argc < 3) {
printf("Uso: %s tiempo mensaje\n", argv[0]);
exit(1);
}
esperar_tiempo(atoi(argv[1]));
for (i=2; i<argc; i++)
printf("%s\n", argv[i]);
}