私はこれを約2時間グーグルで検索していますが、役立つ答えを見つけることができませんでした。
マンページで指定されている「stat」の定義は、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)が欠落しているため、構造体には、目的のtime_t値の代わりにtimespecを返すいくつかのatim、mtim、およびctim値が含まれています。
今私の質問:
- なんでそうなの?間違ったヘッダーを含めたのかもしれませんが、sys/stat.hである必要があると確信しています。
- 私はtimespecについてあまり多くの情報を見つけていません、それは何ですか、そしてなぜそれはここに返されますか?
- 回避策を見つけたとしても、それは助けになりますか、それとも他のシステムが私のコードを実行できなくなりますか?
Ubuntu11.10とgcc4.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の問題で何かをしなければなりませんが、私は何を決定することができません。