2011-08-26 5 views

Odpowiedz

11

czasów sekund rozdzielczości są w polach:

  time_t st_atime; /* time of last access */ 
      time_t st_mtime; /* time of last modification */ 
      time_t st_ctime; /* time of last status change */ 

Ale sekcja „UWAGI” człowieka http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html mówi:

Ponieważ jądro 2.5.48, struktura stat obsługuje rozdzielczość nanosekund dla trzech pól znaczników pliku. Glibc odsłania nanosekundowy komponent każdego pola używając nazw postaci st_atim.tv_nsec, jeśli zdefiniowano makro testowe funkcji _BSD_SOURCE lub _SVID_SOURCE. Pola te są określone w POSIX.1-2008, a począwszy od wersji 2.12 glibc również ujawnia te nazwy , jeśli _POSIX_C_SOURCE jest zdefiniowane z wartością 200809L lub większą, lub _XOPEN_SOURCE jest zdefiniowane z wartością 700 lub większą. Jeśli żadna z wymienionych makra są zdefiniowane, wówczas wartości nanosekundy narażone są z imion st_atimensec formularza.

Więc NSEC części czasach są w tej samej "struct stat": (/usr/include/asm/stat.h)

unsigned long st_atime_nsec; 

unsigned int st_mtime_nsec; 

unsigned long st_ctime_nsec; 

#define STAT_HAVE_NSEC 1 
+1

Więc jeśli chcę mój program być przenośne, który powinienem użyć: 'st_atim.tv_nsec' lub' st_atimensec'? – musiphil

+0

Jak aby był on zgodny ze specyficznych implementacji * NetBSD i OSX (które wspierają nanosekundy ale z różnymi nazwami typów reklam) *? – user2284570

Powiązane problemy