ページ 11

無題

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さん
ありがとうございました!!