Я сейчас гуглю это около двух часов, но не смог найти ответы, которые помогли.
Определение 'stat', как указано в man-странице, говорит о том, что поле st_ctime существует.
struct stat {
dev_t st_dev; /* ID of device containing file */
ino_t st_ino; /* inode number */
mode_t st_mode; /* protection */
nlink_t st_nlink; /* number of hard links */
uid_t st_uid; /* user ID of owner */
gid_t st_gid; /* group ID of owner */
dev_t st_rdev; /* device ID (if special file) */
off_t st_size; /* total size, in bytes */
blksize_t st_blksize; /* blocksize for file system I/O */
blkcnt_t st_blocks; /* number of 512B blocks allocated */
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 */
};
Однако, похоже, что это не так для моей системы, хотя я использую gcc (который должен вести себя в соответствии со стандартом).
Фактически, все временные поля (atime, mtime, ctime) отсутствуют, и поэтому структура содержит некоторые значения atim, mtim и ctim, которые возвращают timepec вместо желаемого значения time_t.
Теперь мои вопросы:
- Почему это так? Может быть, я включил неправильный заголовок, но я действительно уверен, что это должен быть sys / stat.h.
- Я не нашел слишком много информации о timepec, что это такое и почему он возвращается сюда?
- Даже если я найду обходной путь, это поможет мне или какая-либо другая система не сможет выполнить мой код?
Я использую Ubuntu 11.10 и gcc 4.6.1.
Мой код (частично):
struct stat file_info;
time_t t;
if( lstat( path, &file_info ) == 0 ) {
struct tm* timeinfo;
t = file_info.st_ctime;
timeinfo = localtime( &t );
Я был бы очень рад, если бы вы могли помочь с этим, я действительно понятия не имел, почему я не могу скомпилировать, используя поле st_ctime моей структуры, и, как обычно, gcc не слишком помогает при разговоре. об ошибках; -)
Возможно, нужно что-то делать с проблемами #include, но я не могу определить что.