演習8-5 K&R プログラミング言語C

演習8-5

リンク数 (st_nlink) と最後に inode が変更された時間 (st_ctime) を表示させてみる。

#include <time.h>

#define MAX_TIME_STR 100

void parseTm(const struct tm *tp, char *str)
{
    strftime(str, MAX_TIME_STR, "%b %d %Y %H:%M:%S", tp);
}

/* fsize : ファイル "name" のサイズを印字する */
void fsize(char *name)
{
    struct stat stbuf;
    char timestr[MAX_TIME_STR];

    if (stat(name, &stbuf) == -1) {
        fprintf(stderr, "fsize : can't access %s\n", name);
        return;
    }
    if ((stbuf.st_mode & S_IFMT) == S_IFDIR) {
        dirwalk(name, fsize);
    }
    parseTm(localtime(&stbuf.st_ctime), timestr);
    printf("%4d %8ld %s %s\n", stbuf.st_nlink, stbuf.st_size, timestr, name);
}

実行結果

$ ./fsize *
   1      155 Mar 16 2010 12:00:36 Makefile
   1    10560 Mar 16 2010 12:39:46 fsize
   1     3763 Mar 16 2010 12:39:44 main.c
   1    10244 Mar 16 2010 12:39:46 main.o
   1      840 Mar 16 2010 12:02:18 my_dirent.h
プログラミング言語C 第2版 ANSI規格準拠
B.W. カーニハン D.M. リッチー
共立出版
売り上げランキング: 9726
«
»