天天看点

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

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

Field

Description

Example

ls(1) option

st_atime

last-access time of file data

read

-u

st_mtime

last-modification time of file data

write

default

st_ctime

last-change time of i-node status

chmod, chown

-c

第118页的示例代码:

<code>$ </code><code>cat</code> <code>4_21.c </code>

<code>#include &lt;stdio.h&gt;</code>

<code>#include &lt;stdlib.h&gt;</code>

<code>#include &lt;sys/types.h&gt;</code>

<code>#include &lt;sys/stat.h&gt;</code>

<code>#include &lt;unistd.h&gt;</code>

<code>#include &lt;fcntl.h&gt;</code>

<code>#include &lt;utime.h&gt;</code>

<code>int main(int argc, char *argv[])</code>

<code>{</code>

<code>  </code><code>int         i, fd;</code>

<code>  </code><code>struct stat     statbuf;</code>

<code>  </code><code>struct utimbuf   timebuf;</code>

<code>  </code><code>for</code> <code>(i = 1; i &lt; argc; i++) {</code>

<code>    </code><code>if</code> <code>(stat(argv[i], &amp;statbuf) &lt; 0) {</code>

<code>      </code><code>printf</code><code>(</code><code>"%s: stat error"</code><code>, argv[i]);</code>

<code>      </code><code>continue</code><code>;</code>

<code>    </code><code>}</code>

<code>    </code><code>if</code> <code>((fd = </code><code>open</code><code>(argv[i], O_RDWR | O_TRUNC)) &lt; 0) {</code>

<code>      </code><code>printf</code><code>(</code><code>"%s: open error"</code><code>, argv[i]);</code>

<code>    </code><code>close(fd);</code>

<code>    </code><code>timebuf.actime = statbuf.st_atime;</code>

<code>    </code><code>timebuf.modtime = statbuf.st_mtime;</code>

<code>    </code><code>if</code> <code>(utime(argv[i], &amp;timebuf) &lt; 0) {</code>

<code>      </code><code>printf</code><code>(</code><code>"%s: utime error"</code><code>, argv[i]);</code>

<code>  </code><code>}</code>

<code>  </code><code>exit</code><code>(0);</code>

<code>}</code>

运行结果为:

<code>$ gcc -g -o 4_21 4_21.c</code>

<code># 查看最后一次修改的时间</code>

<code>$ </code><code>ls</code> <code>-l foo bar</code>

<code>-rw------- 1 richard richard 0 Dec  4  2014 bar</code>

<code>-rw------- 1 richard richard 0 Dec  4  2014 foo</code>

<code># 查看最后一次访问的时间</code>

<code>$ </code><code>ls</code> <code>-lu foo bar </code>

<code>-rw------- 1 richard richard 0 Mar 20 20:41 bar</code>

<code>-rw------- 1 richard richard 0 Mar 20 20:41 foo</code>

<code># 打印当前时间</code>

<code>$ </code><code>date</code>

<code>Sat Aug 29 13:13:26 CST 2015</code>

<code># 执行程序</code>

<code>$ .</code><code>/4_21</code> <code>foo bar</code>

<code># 检查结果</code>

<code>$ </code><code>ls</code> <code>-l foo bar </code>

<code># 检查最后访问时间</code>

<code># 检查最后状态改变时间</code>

<code>$ </code><code>ls</code> <code>-lc foo bar </code>

<code>-rw------- 1 richard richard 0 Aug 29 13:13 bar</code>

<code>-rw------- 1 richard richard 0 Aug 29 13:13 foo</code>

版权声明:原创作品,如需转载,请注明出处。否则将追究法律责任

本文转自    bigstone2012   51CTO博客,原文链接:http://blog.51cto.com/lavenliu/1689515