2011-08-26 31 views

Trả lời

11

Giờ thứ hai có độ phân giải là trong các lĩnh vực:

  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 */ 

Nhưng "GHI CHÚ" của người đàn ông http://www.kernel.org/doc/man-pages/online/pages/man2/stat.2.html nói:

Kể từ kernel 2.5.48, cấu trúc stat hỗ trợ độ phân giải nano giây cho ba trường dấu thời gian tệp. Glibc cho thấy thành phần nano giây của mỗi trường sử dụng tên của biểu mẫu st_atim.tv_nsec nếu macro thử nghiệm tính năng _BSD_SOURCE hoặc _SVID_SOURCE được xác định. Các trường này được chỉ định trong POSIX.1-2008 và bắt đầu với phiên bản 2.12, glibc cũng hiển thị các trường này tên nếu _POSIX_C_SOURCE được xác định với giá trị 200809L hoặc cao hơn hoặc _XOPEN_SOURCE được xác định với giá trị 700 trở lên. Nếu không có số nào trong số các macro được đề cập ở trên được xác định thì giá trị nano giây được hiển thị với tên của biểu mẫu st_atimensec.

Vì vậy, các bộ phận nsec của thời gian được tính trong cùng một "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

Vì vậy, nếu tôi muốn chương trình của tôi để được cầm tay, cái nào tôi nên sử dụng: 'st_atim.tv_nsec' hoặc' st_atimensec'? – musiphil

+0

Cách làm cho nó tương thích với các triển khai cụ thể của NetBSD và OSX * (hỗ trợ nano giây nhưng với các loại tên quảng cáo khác nhau) *? – user2284570

Các vấn đề liên quan