Estoy trabajando en un programa en C donde necesito obtener la última hora modificada del archivo. Lo que hace el programa es una función que recorre cada archivo dentro de un directorio y cuando se encuentra un archivo en particular llama a otra función para verificar las últimas horas modificadas del archivo.Obtener la última hora del archivo en linux
Dentro del directorio no es un mylog.txt.1
, mylog.txt.2
y mylog.txt.3
etc. Cuando enumero el directorio en Linux usando el comando ll puedo ver que mylog.txt.1
y mylog.txt.2
fueron modificados en el 4 de mayo y mylog.txt.3
se modificó el 3 de mayo.
Cuando el programa comprueba cada uno de estos archivos, siempre regresa el 3 de mayo. A continuación está el código que estoy usando.
void getFileCreationTime(char *filePath)
{
struct stat attrib;
stat(filePath, &attrib);
char date[10];
strftime(date, 10, "%d-%m-%y", gmtime(&(attrib.st_ctime)));
printf("The file %s was last modified at %s\n", filePath, date);
date[0] = 0;
}
He intentado todas las diferentes variaciones de st_ctime
, es decir st_mtime
y st_atime
pero todos ellos tercio de retorno puede.
Gracias por cualquier ayuda que pueda proporcionar.
tal vez la limpieza en primer lugar: ¿por qué pasar a un tamaño de 20 a 'strftime' mientras que el tampón es 10 de largo? ¿por qué no verificar el valor de retorno de 'stat'? Si 'stat' falla, está analizando un valor de basura. – mvds
@mvds disculpa que fue un error tipográfico – Boardy
asegúrate de pasar diferentes rutas de archivos, también "attrib.st_ctime" dará la "hora del último cambio de estado", si estás buscando la "hora de la última modificación" debes usar " attrib.st_mtime " – ray