ページ 1 / 1
無題
Posted: 2008年10月20日(月) 14:17
by Haru
度々すみません。Haruです。ファイルの更新日時を取得したいのですが、調べた結果完全に環境に依存するということはわかったのですが、「linux gcc」の環境でファイルの更新日時を取得できる、関数はありますか?
Re:無題
Posted: 2008年10月20日(月) 14:35
by Mist
statのst_mtimeじゃだめなの?
Re:無題
Posted: 2008年10月20日(月) 15:04
by Haru
>statのst_mtimeじゃだめなの?
かなり、これで良いっぽいですm(__)m
いつもありがとうございます!!
Re:無題
Posted: 2008年10月23日(木) 10:01
by Haru
ファイルの更新日を取得する関数を、教えていただき、どちらのファイルが新しいかを判別する。という事は
stat(変数A,&st); stat(変数B,&st2);
if((st.st_mtime) >(st2.st_mtime))
のようにして出来るようになったのですが、
今度は先月か(または先々月)どうかを、判別する事をしたいのですが
、何か良い方法はあるでしょうか?(ツール起動時においての先月かどうか、という意味です)
#前々回に教えて頂いた、ファイル、ディレクトリの判別は
switch(buf.st_mode & S_IFMT)
{
case S_IFREG:
case S_IFDIR:
}
Mistさんに教えて頂いたとおりstatの、
このマクロで解決できました!!
Re:無題
Posted: 2008年10月23日(木) 10:18
by Mist
> 今度は先月か(または先々月)どうかを、判別する事をしたいのですが
判別する対象か明確じゃないですが、最終更新日時がというのであれば
st_mtimeにどんな値が入っているのかを理解していれば、特に難しくはないと思いますが。
ヒント
UNIXタイム
Re:無題
Posted: 2008年10月23日(木) 10:27
by Mist
> このマクロで解決できました!!
む、思ってたのとちょっと違うな(^^;
一応サンプル。
if ( S_ISREG(buf.st_mode) {
printf("普通のファイルです。\n");
} else if ( S_ISDIR(buf.st_mode) {
printf("ディレクトリです。\n");
} else {
printf("ファイルでもディレクトリでもありません。\n");
}
Re:無題
Posted: 2008年10月23日(木) 10:29
by toyo
9/30に更新したものを10/1に開いても先月と判定するということでしょうか
それならlocaltime( )関数でtime_t時間をtm構造体に変換してtm_monメンバー変数を比較すればいいでしょう
Re:無題
Posted: 2008年10月23日(木) 14:15
by Haru
>む、思ってたのとちょっと違うな(^^;
>一応サンプル。
ありがとうございます。
こっちの方がスッキリしてるので、こちらを使わせてもらうことにしました。
>判別する対象か明確じゃないですが、最終更新日時がというのであれば
>st_mtimeにどんな値が入っているのかを理解していれば、特に難しくはないと思いますが。
これを調べている間にtoyoさんのアドバイスに行き着いてしまいました(^^;
でも、これはこれで覚えておいて損はなさそうなので調べてみます!!
>9/30に更新したものを10/1に開いても先月と判定するということでしょうか
やっぱり、ここは気になりますよね(^^;
まぁ、ここまで、出来たならもし、30日後だというのであれば、
すぐそれに直せますから、さほど気にしなくても大丈夫ですかね!笑
>それならlocaltime( )関数でtime_t時間をtm構造体に変換してtm_monメンバー変数を比較すればいいでしょう
このようになりました!!
time(&buf.st_atime);
time(&timer);
nowmon = localtime(&timer); //システム起動時月
newmon = localtime(&buf.st_atime); //ファイル更新月
if(newmon->tm_mon+1 == nowmon->tm_mon)
Re:無題
Posted: 2008年10月23日(木) 14:18
by Haru
間違ってenter押したら投稿されてしまった(^^;
Mistさんtoyoさん
ありがとうございました!!