Implementacion de bucle infinito

Iniciado por mark182, 10 Marzo 2011, 15:37 PM

0 Miembros y 1 Visitante están viendo este tema.

mark182

Buenos dias,

Estoy pensando en hacer un pequeño soft en C que lee el contenido de un archivo de texto si, y solo si, el archivo existe o tiene contenido nuevo. Pero no se si la forma de implementarlo es la correcta.
Lo que estaba pensando seria hacer un while preguntando por la existencia del archivo, si existe leerlo y eliminarlo. De esta manera se quedaria en bucle infinito esperando que exista el archivo.

Estoy en la forma correcta?

PD: dicho archivo se genera automaticamente cada 5 seg.

Muchas gracias.

Akai


while(1){
f=fopen(fichero,"algo"); //en algo --> lectura y escritura, no lo recuerdo ahora
if(f){ // existe el fichero
haz_lo_que_sea(f);
borra_el_contenido(f);
fclose(f);
}
//no necesitas cerrar, en principio, un fichero que no se ha podido abrir
}


Eso sería la forma "literal" del bucle infinito y hacer lo que sea si existe. Me parece que para borrar el fichero tendrías que recurrir a funciones de sistema.

Garfield07

"algo" sería en tu caso "a+".

PD: No estaría mal cerrarlo de todos modos...
Un saludo! Sagrini


* Quiero cambiar el mundo, pero estoy seguro de que no me darían el código fuente.
* No estoy tratando de destruir a Microsoft. Ese será tan solo un efecto colateral no intencionado.
* Si compila esta bien, si arranca es perfecto.

¡Wiki elhacker.net!
Un saludo

Akai

Cita de: Sagrini en 12 Marzo 2011, 11:07 AM
PD: No estaría mal cerrarlo de todos modos...

No, no lo necesitas. fopen (y por debajo open) te devuelven un puntero a fichero (o descriptor de fichero) si dicho fichero existe y lo has podido abrir. Si no lo has podido abrir, no necesitas cerrarlo.

Para este caso, posiblemente te interese incluso trabajar con funciones de sistema a bajo nivel, vease open (que no fopen) de forma que lo abras pero no lo crees (cosa que no se si se puede hacer con fopen (más que nada porque no tengo la referencia ahora mismo en la cabeza))