免费注册 查看新帖 |

Chinaunix

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

为什么修改文件ctime也跟着mtime一起变? [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2010-11-08 16:11 |只看该作者 |倒序浏览
我创建一个文件,然后往里面重定向文本,用vi修改,发现ctime总是和mtime一起变。
ctime不是创建时间吗?
我要得到文件的创建时间岂不是 ...... 没有办法?

[xiongzh@zcyds207 tmp]$ touch log
[xiongzh@zcyds207 tmp]$ truss -vlstat -tlstat /bin/ls log
lstat64("log", 0xFFBEE72                      = 0
    d=0x04E4087E i=439790 m=0100640 l=1  u=226863 g=2450  sz=0
        at = Nov  8 16:09:07 CST 2010  [ 1289203747 ]
        mt = Nov  8 16:09:07 CST 2010  [ 1289203747 ]
        ct = Nov  8 16:09:07 CST 2010  [ 1289203747 ]
    bsz=8192  blks=0     fs=nfs
log
[xiongzh@zcyds207 tmp]$ echo hello > log
[xiongzh@zcyds207 tmp]$ truss -vlstat -tlstat /bin/ls log
lstat64("log", 0xFFBEE72                      = 0
    d=0x04E4087E i=439790 m=0100640 l=1  u=226863 g=2450  sz=6
        at = Nov  8 16:09:07 CST 2010  [ 1289203747 ]
        mt = Nov  8 16:09:18 CST 2010  [ 1289203758 ]
        ct = Nov  8 16:09:18 CST 2010  [ 1289203758 ]
    bsz=8192  blks=0     fs=nfs
log
[xiongzh@zcyds207 tmp]$ echo world >> log
[xiongzh@zcyds207 tmp]$ truss -vlstat -tlstat /bin/ls log
lstat64("log", 0xFFBEE72                      = 0
    d=0x04E4087E i=439790 m=0100640 l=1  u=226863 g=2450  sz=12
        at = Nov  8 16:09:07 CST 2010  [ 1289203747 ]
        mt = Nov  8 16:09:32 CST 2010  [ 1289203772 ]
        ct = Nov  8 16:09:32 CST 2010  [ 1289203772 ]
    bsz=8192  blks=16    fs=nfs
log

论坛徽章:
0
2 [报告]
发表于 2010-11-08 17:36 |只看该作者
自己更正下错误的理解:ctime不是文件创建时间create time,而是文件的i节点信息被改变的时间,change time。

为什么文件重定向会修改文件的i节点信息呢?

有往文件中写log,又不修改i节点信息的办法吗?

论坛徽章:
0
3 [报告]
发表于 2010-11-08 17:41 |只看该作者
自己找到了答案,但是还没有解决办法。。。。。。

重定向应该是通过管道实现,pipe()调用会改变ctime和mtime。

man stat

     st_atime
           Time when file data was last accessed. Changed by  the
           following   functions:   creat(),   mknod(),   pipe(),
           utime(2), and read(2).

     st_mtime
           Time when data was last modified. Changed by the  fol-
           lowing  functions:  creat(), mknod(), pipe(), utime(),
           and write(2).

     st_ctime
           Time when file status was last changed. Changed by the
           following   functions:   chmod(),   chown(),  creat(),
           link(2),  mknod(),  pipe(),  unlink(2),  utime(),  and
           write().
:
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP