每个文件维护了三个时间字段,它们的目的如下表所示:
示例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