免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 3500 | 回复: 8
打印 上一主题 下一主题

[C] inode结构体的几个小疑问,是在是不懂 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-12-03 20:31 |只看该作者 |倒序浏览
一开始的时候,看到struct stat结构体,我以为stat结构体就是unix或者linux下的inode里面信息的实现。但是查了很多资料,都没有说stat与inode的关系,很不解因为一直以为struct stat就是inode所有信息的。
后来又百度inode结构体,看到struct inode以后,才发现struct inode结构体的信息要比struct stat多的多。
1:那么struct stat结构体与inode的关系到底是一种什么样的关系呢?
2:关于ctime。ctime是状态信息,我理解的是,只要一个文件的struct inode结构体中的任何一个变量改变的话,都会引起ctime的改变?(不知道这个理解正确吗?),如果这么理解正确的话,那么改变一个文件的atime应该也会引起ctime的改变的啊。为什么在《unix 环境高级编程》这本书里面列出的可以改变文件的时间的那个表格中,read函数改变了一个文件的atime,却没有改变它的ctime?这个又是我一个很困惑不已的地方。
3:而且《unix环境高级编程》这本书我看到了第四章,还是没有关于struct inode结构体的信息和关于inode的函数。很多东西已经开始不理解了,暂时也不想太着急往后看了。
我觉得已经有了struct inode结构体了,为什么还需要struct stat结构体呢?真的不明白。

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
2 [报告]
发表于 2012-12-03 22:01 |只看该作者
inode是内核态的,不同操作系统不同文件系统都不一样。

论坛徽章:
0
3 [报告]
发表于 2012-12-03 22:15 |只看该作者
本帖最后由 呼呼的id 于 2015-10-28 10:27 编辑

第一次申请论坛账号发帖,字号这么大,你们平时用什么字号的?看了晕了……

论坛徽章:
0
4 [报告]
发表于 2012-12-03 22:19 |只看该作者
那 struct stat是一个对外标准对吧?
第一次发帖,字号大小不对……
那ctime 那个文件的状态修改时间你有没有研究?谢谢你哈
回复 2# liuiang


   

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
5 [报告]
发表于 2012-12-03 22:24 |只看该作者
回复 4# 呼呼的id


    ctime是change time吧,atime是access time吧,write两者都会更改,read只更改atime,不改ctime吧。记不太清楚,你可以度娘看看。

论坛徽章:
0
6 [报告]
发表于 2012-12-03 23:17 |只看该作者
百度找不到
百度找不到关于ctime 与 atime 的关系。都是说 mtime 会改变 ctime。
但是我就是不明白atime 与 ctime的关系。
我的理解是只要struct inode 中的任何成员改变,都会改变ctime的值,那为什么read《unix 环境高级编程》上说read 函数会改变atime,却不改变ctime?
回复 5# liuiang


   

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
7 [报告]
发表于 2012-12-03 23:27 |只看该作者
ctime貌似是create time,mtime才是modify time吧,刚才貌似说错了。

论坛徽章:
4
天秤座
日期:2013-10-18 13:58:33金牛座
日期:2013-11-28 16:17:01辰龙
日期:2014-01-14 09:54:32戌狗
日期:2014-01-24 09:23:27
8 [报告]
发表于 2012-12-03 23:29 |只看该作者
http://www.linuxsir.org/bbs/thread272072.html?pageon=1#2105481

time_t st_atime; /* 最后一次访问时间 */
time_t st_mtime; /* 最后一次修改时间 */
time_t st_ctime; /* 最后一次改变时间(指属性) */

http://pubs.opengroup.org/online ... efs/sys/stat.h.html

time_t    st_atime   Time of last access.
time_t    st_mtime   Time of last data modification.
time_t    st_ctime   Time of last status change.

论坛徽章:
0
9 [报告]
发表于 2012-12-03 23:32 |只看该作者
ctime是change time,不是creat time啊,指的是inode信息改变的时间,比如inode里面有mtime,文件属主,文件数组,文件权限,文件链接数这些。是change,不是creat的…… 回复 7# liuiang


   
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP