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

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

临渭区ssl适用于网站、小程序/APP、API接口等需要进行数据传输应用场景,ssl证书未来市场广阔!成为创新互联建站的ssl证书销售渠道,可以享受市场价格4-6折优惠!如果有意向欢迎电话联系或者加微信:18980820575(备注:SSL证书合作)期待与您的合作!

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页的示例代码:

$ cat 4_21.c 
#include 
#include 
#include 
#include 
#include 
#include 
#include 

int main(int argc, char *argv[])
{
  int         i, fd;
  struct stat     statbuf;
  struct utimbuf   timebuf;

  for (i = 1; i < argc; i++) {
    if (stat(argv[i], &statbuf) < 0) {
      printf("%s: stat error", argv[i]);
      continue;
    }

    if ((fd = open(argv[i], O_RDWR | O_TRUNC)) < 0) {
      printf("%s: open error", argv[i]);
      continue;
    }
    close(fd);

    timebuf.actime = statbuf.st_atime;
    timebuf.modtime = statbuf.st_mtime;

    if (utime(argv[i], &timebuf) < 0) {
      printf("%s: utime error", argv[i]);
      continue;
    }
  }

  exit(0);
}

运行结果为:

$ gcc -g -o 4_21 4_21.c

# 查看最后一次修改的时间
$ ls -l foo bar
-rw------- 1 richard richard 0 Dec  4  2014 bar
-rw------- 1 richard richard 0 Dec  4  2014 foo

# 查看最后一次访问的时间
$ ls -lu foo bar 
-rw------- 1 richard richard 0 Mar 20 20:41 bar
-rw------- 1 richard richard 0 Mar 20 20:41 foo

# 打印当前时间
$ date
Sat Aug 29 13:13:26 CST 2015

# 执行程序
$ ./4_21 foo bar

# 检查结果
$ ls -l foo bar 
-rw------- 1 richard richard 0 Dec  4  2014 bar
-rw------- 1 richard richard 0 Dec  4  2014 foo

# 检查最后访问时间
$ ls -lu foo bar 
-rw------- 1 richard richard 0 Mar 20 20:41 bar
-rw------- 1 richard richard 0 Mar 20 20:41 foo

# 检查最后状态改变时间
$ ls -lc foo bar 
-rw------- 1 richard richard 0 Aug 29 13:13 bar
-rw------- 1 richard richard 0 Aug 29 13:13 foo

标题名称:文件时间(Unix环境高级编程)
链接地址:http://hbruida.cn/article/jpsoph.html