Escribiendo el código así sin comprobar y en c estructurado seria algo asi (no se ni si compila):
Código:
#include <time.h>
#include <sys/time.h>
#include <stdlib.h>
#include <stdio.h>
main(){
struct timeval inicio,tiempo;
while(1==1){
gettimeofday(&inicio, NULL);
gettimeofday(&tiempo, NULL);
while(tiempo.tv_sec-inicio.tv_sec < 300){
gettimeofday(&tiempo, NULL);
sleep(1);
}
printf("imprimiendo basura cada 300 segundos!!!\n");
}
}
Un bucle <while> infinito se puede hacer simplemente con un 1 igual que se puede hacer sólo con <true>:
Código
while(1){ // cuerpo del bucle infinito }
Y la otra pregunta que me surge es... Si desde un principio sabes el tiempo que tienes que esperar ¿por qué no así?
Código
while(1){ Sleep(milisegundos_a_esperar); // lo que quieres que se repita }
Lo malo de esta forma (tanto con una implementación como con la otra) es que el programa tiene que estar siempre ejecutándose; como ya te ha comentado @animanegra, es preferible dejarlo como tarea programa usando herramientas externas al propio programa. Suerte