- 论坛徽章:
- 0
|
include <sys/stat.h>
#include <linux/fs.h>
main()
{
struct stat buf,buf2;
system("touch f1");
stat("f1",&buf);
stat("/dev/hda1",&buf2);
printf("f1 dev=%u %u %u\n",buf.st_dev,MAJOR(buf.st_dev),MINOR(buf.st_dev));
printf("f1 rdev=%u %u %u\n",buf.st_rdev,MAJOR(buf.st_rdev),MINOR(buf.st_rdev));
printf("f1 block size=%u\n",buf.st_blksize);
printf("f1 block num=%u\n",buf.st_blocks);
printf("f1 atime:%s",ctime(&buf.st_atime));
printf("f1 mtime:%s",ctime(&buf.st_mtime));
printf("f1 ctime:%s\n",ctime(&buf.st_ctime));
printf("hda dev=%u %u %u\n",buf2.st_dev,MAJOR(buf2.st_dev),MINOR(buf2.st_dev));
printf("hda rdev=%u %u %u\n",buf2.st_rdev,MAJOR(buf2.st_rdev),MINOR(buf2.st_rdev));
printf("hda block size=%u\n",buf2.st_blksize);
printf("hda block num=%u\n",buf2.st_blocks);
printf("hda atime:%s",ctime(&buf2.st_atime));
printf("hda mtime:%s",ctime(&buf2.st_mtime));
printf("hda ctime:%s",ctime(&buf2.st_ctime));
} |
这个例子想打印两种文件的i节点中的信息,出来的结果是这样的
[root@localhost mytest]# ./a.out
f1 dev=9 0 0
f1 rdev=0 0 0
f1 block size=1024
f1 block num=1
f1 atime:Thu Oct 11 00:00:00 2007
f1 mtime:Thu Oct 11 22:39:18 2007
f1 ctime:Thu Oct 11 22:39:18 2007
hda dev=2049 0 8
hda rdev=769 0 3
hda block size=4096
hda block num=0
hda atime:Thu Jan 30 18:24:36 2003
hda mtime:Thu Jan 30 18:24:36 2003
hda ctime:Thu Apr 13 17:54:41 2006
|
我想问一下
(1)为什么f1文件的atime的时间都是0?
(2)atime是最后一次存取访问时间,是不是最后一次读或写的时间?
mtime是最后一次修改时间,是不是最后一次写或修改i节点的时间?
ctime是最后一次属性修改时间,是不是仅仅是修改i节点的时间?
(3)dev是文件所在的设备ID,是磁盘吗?还是具体的某个分区?为什么值为9呢?用major和minor怎么返回为0 啊?
(4)两种文件的block size不同,是因为文件系统不同吗?
[ 本帖最后由 wkathy 于 2007-10-11 23:09 编辑 ] |
|