Cita:
Iniciado por yournightmare86 Trataré de explicarme mejor. La duda que tenga es de una parte de un programa algo más grande. Para programar uso Anjuta, compilador para Linux. Lo que quiero es hacer yo el programa, no uno ya hecho, programando en C utilizando las funciones system y exec que permiten el uso de comandos de linux.
Resumiendo, leí algo de que con fstat se podía hacer lo que quiero; comprobar cada 10 segundos si un fichero ha sido modificado o no, y en caso de haber sido modificado indicar cuando fué modificado.
Espero haberme expresado algo mejor, gracias por tu ayuda Instru.
Saludos.
Así rápidamente te respondo (es hora de dormir aquí :):
1. Una cosa: Anjuta no es un compilador, es el IDE. El compilador es gcc (normalmente).
2. Para comprobar algo cada 10 segundos, sí, puedes hacer un bucle while(seguir) { sleep(10000); ... } aunque también tienes otras opciones como usar timers del sistema operativo, que llamarán a una función que quieras cada X tiempo que desees.
3. Sobre fstat, ¿qué duda tienes?
Aquí te dejo un ejemplo extra-rápido de cómo podrías hacerlo
Código:
struct stat estado;
time_t ultimo;
int fd = open("fichero", O_RDONLY);
while(...) {
fstat(fd, &estado);
if(estado.st_mtime != ultimo) {
ultimo = estado.st_mtime;
printf("%s - Archivo modificado\n", asctime(estado.st_mtime));
}
sleep(10);
}
close(fd);
No sé si estará bien. Ten en cuenta que tendrás que poner alguna clase de condición en los "..." para poder parar el programa.