文件时间(Unix环境高级编程)

  

每个文件维护了三个时间字段,它们的目的如下表所示:

字段描述

示例ls(1)选择
st_atime
最后访问时间的文件数据读

- u
st_mtime
最后修改时间的文件数据

默认写
st_ctime
上次修改时间的索引节点状态
chmod,乔恩
- c


第118页的示例代码:

,美元cat  4 _21.c    # include  & lt; stdio.h>   # include  & lt; stdlib.h>   # include  & lt; sys/types.h>   # include  & lt; sys/stat.h>   # include  & lt; unistd.h>   # include  & lt; fcntl.h>   # include  & lt; utime.h>      命令行参数个数,int 主要(int  char  * argv [])   {   int 才能,,,,,,,,,我,,fd;   struct 才能;stat ,,,, statbuf;   struct 才能;utimbuf ,, timebuf;      for 才能;(小姐:=,1,,小姐:& lt;,命令行参数个数;,我+ +),{   ,,,if  (stat (argv[我],,,statbuf), & lt;, 0), {   ,,,,,printf (" % s: stat 错误”,,argv[我]);   ,,,,,继续;   ,,,}      ,,,if  ((=fd 开放(argv[我],O_RDWR  |, O_TRUNC)), & lt;, 0), {   ,,,,,printf (" % s: open 错误”,,argv[我]);   ,,,,,继续;   ,,,}   ,,,关闭(fd);      ,,,timebuf.actime =, statbuf.st_atime;   ,,,timebuf.modtime =, statbuf.st_mtime;      ,,,if  (utime (argv[我],,,timebuf), & lt;, 0), {   ,,,,,printf (" % s: utime 错误”,,argv[我]);   ,,,,,继续;   ,,,}   ,,}      退出才能(0);   }


运行结果为:

,美元gcc  -g  _21.c -o  4 _21  4      #,查看最后一次修改的时间   美元,ls  -l  foo 酒吧   - - - - - - -女人;1,richard  richard  0, Dec , 4, 2014,酒吧   - - - - - - -女人;1,richard  richard  0, Dec , 4, 2014, foo      #,查看最后一次访问的时间   美元,ls  -lu  foo  bar    - - - - - - -女人;1,richard  richard  0, Mar  20, 20:41 酒吧   - - - - - - -女人;1,richard  richard  0, Mar  20, 20:41  foo      #,打印当前时间   美元,日期   Sat  Aug  29, 13:13:26  CST  2015      #,执行程序   ,美元。/4 _21  foo 酒吧      #,检查结果   美元,ls  -l  foo  bar    - - - - - - -女人;1,richard  richard  0, Dec , 4, 2014,酒吧   - - - - - - -女人;1,richard  richard  0, Dec , 4, 2014, foo      #,检查最后访问时间   美元,ls  -lu  foo  bar    - - - - - - -女人;1,richard  richard  0, Mar  20, 20:41 酒吧   - - - - - - -女人;1,richard  richard  0, Mar  20, 20:41  foo      #,检查最后状态改变时间   美元,ls  -lc  foo  bar    - - - - - - -女人;1,richard  richard  0, Aug  29, 13:13 酒吧   - - - - - - -女人;1,richard  richard  0, Aug  29, 13:13  foo


文件时间(Unix环境高级编程)