Dosyanın son değiştirilme zamanını almam gereken bir C programı üzerinde çalışıyorum. Programın yaptığı işlev, bir dizinin içindeki her dosyaya bir işlevdir ve belirli bir dosya (lar) bulunduğunda, dosyanın son değiştirilme zamanlarını kontrol etmek için başka bir işlevi çağırır. Ben ll komutu ben mylog.txt.1
ve mylog.txt.2
4 Mayıs'ta modifiye edilmiş ve mylog.txt.3
3 Mayıs tarihinde güncellenmiştir görebilirsiniz kullanarak linux dizin listelediğinizde dizin içindeSon değişiklik zamanını linux içinde alın.
bir mylog.txt.1
, mylog.txt.2
ve mylog.txt.3
vb vardır.
Program, bu dosyaların her birini denetlediğinde, her zaman 3. olabilir. Aşağıda kullandığım kod.
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;
}
Ben st_ctime
, yani st_mtime
ve st_atime
tüm farklı varyasyonları denedim ama hepsi dönüş 3 may.
Sağladığınız her türlü yardım için teşekkür ederiz.
belki temizleme ilk: tampon uzun 10 iken neden strftime' '20 büyüklüğünde geçmesi? Neden stat'in dönüş değerini kontrol etmiyorsunuz? "Stat" başarısız olursa, bir çöp değeri ayrıştırıyorsunuz. – mvds
@mvds bir yazım hatası – Boardy
farklı dosya yolundan geçtiğinizden emin olun, ayrıca "attrib.st_ctime" de "son değişiklik zamanını" verecektir, eğer "son değişiklik zamanını" kullanmanız gerekiyorsa " attrib.st_mtime " – ray