十四、文件和目录——文件时间和utime函数
14.1 文件时间
存在于 stat 结构体中
  
14.2 文件时间函数
14.2.1 介绍
  utime(修改文件的存取时间和更改时间)
  相关函数 utimes,stat
#include <sys/types.h>
#include <utime.h>
int utime(const char * filename, struct utimbuf * buf);
- 函数功能
- 更改文件的存取和修改时间
 - utime 会自动更新 st_ctime 的值
 
 - 参数 buf
- 空指针:则取当前时间
- 进程的有效用户 ID 必须等于该文件的所有者ID
 - 或者进程对该文件具有写权限
 
 - 非空:取 utimebuf 结构体中的时间
- 进程有效用户ID 等于该文件的所有者ID
 - 或者进程是超级用户进程
 
 
 - 空指针:则取当前时间
 - 返回值
- 如果参数buf为空指针(NULL),则该文件的存取时间和更改时间全部会设为目前时间。
 - 执行成功则返回 0,失败返回-1,错误代码存于errno。
 
 - 错误代码
- EACCESS 存取文件时被拒绝,权限不足
 - ENOENT 指定的文件不存在。
 
 
结构体 utimbuf 定义如下
struct utimbuf{
time_t actime; //访问时间
time_t modtime; //修改时间
};
14.2.3 例子
file_time.c
#include <time.h>
#include <sys/types.h>
#include <utime.h>
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/stat.h>
#include <fcntl.h>
#include <string.h>
#include <unistd.h>
#include <memory.h> // ctime 函数 将事件转换成字符串输出
void out(struct stat buff)
{
time_t val_atime = (time_t)buff.st_atime;
time_t val_mtime = (time_t)buff.st_mtime;
time_t val_ctime = (time_t)buff.st_ctime;
printf("atime: %s\n", ctime(&val_atime));
printf("mtime: %s\n", ctime(&val_mtime));
printf("ctime: %s\n", ctime(&val_ctime));
} //获取文件属性信息
struct stat get_stat(char *file, struct stat buff)
{
memset(&buff, , sizeof(buff));
if(lstat(file, &buff) < ) {
perror("lstat error");
exit();
} return buff;
} int main(int argc, char *argv[])
{
if(argc < ) {
fprintf(stderr, "usage:%s file\n", argv[]);
exit();
} struct stat buff;
buff = get_stat(argv[], buff); //备份原先的时间
struct stat bak_stat = buff;
out(buff);
printf("=============================\n"); //设置文件的事件为当前系统时间
utime(argv[], NULL);
buff = get_stat(argv[], buff);
out(buff);
printf("=============================\n"); //把文件的时间恢复成之前的时间
struct utimbuf timebuf;
timebuf.actime = bak_stat.st_atime;
timebuf.modtime = bak_stat.st_mtime;
utime(argv[], &timebuf);
buff = get_stat(argv[], buff);
out(buff); return ;
}
编译执行:
  
ctime 的时间是 i 节点的最后更改时间,只要调用了 utime 就会自动修改 ctime。
十四、文件和目录——文件时间和utime函数的更多相关文章
- 孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习
		
孤荷凌寒自学python第三十四天python的文件操作对file类的对象学习 (完整学习过程屏幕记录视频地址在文末,手写笔记在文末) 一.close() 当一个file对象执行此方法时,将关闭当前 ...
 - JS读取/创建本地文件及目录文件夹的方法
		
原文链接:http://www.cnblogs.com/ayan/archive/2013/04/22/3036072.html 注:以下操作只在IE下有效! Javascript是网页制作中离不开的 ...
 - TortoiseSVN设置忽略文件和目录文件夹
		
TortoiseSVN设置忽略文件和目录文件夹 在多数项目中你总会有文件和目录不需要进行版本控制.这可能包括一些由编译器生成的文件,*.obj,*.lst,或许是一个用于存放可执行程序的输出文件夹. ...
 - 第四节 Linux目录文件及文件基本操作
		
一.Linux目录结构 Linux 的目录与 Windows 的目录的区别: 一种不同是体现在目录与存储介质(磁盘,内存,DVD 等)的关系上,以往的 Windows 一直是以存储介质为主的,主要以盘 ...
 - PHP7语法知识(四):目录文件操作、Cookie与Session、MySQL数据库的使用、Redis数据库、PHP处理XML与JSON
		
目录文件操作 一.目录 1.判断文件类型: 2.创建和删除目录: 3.打开读取和关闭目录 4.获得路径中目录部分 5.目录磁盘空间 二.文件操作 1.打开文件: 2.读取文件: 3.获得文件属性: 4 ...
 - 文件和目录之mkdir和rmdir函数
		
用mkdir函数创建目录,用rmdir函数删除目录. #include <sys/stat.h> int mkdir( const char *pathname, mode_t mode ...
 - Asp.net 获取服务器指定文件夹目录文件,并提供下载
		
string dirPath = HttpContext.Current.Server.MapPath("uploads/"); if (Directory.Exists(dirP ...
 - UNIX环境编程学习笔记(11)——文件I/O之文件时间以及 utime 函数
		
lienhua342014-09-16 1 文件的时间 每个文件都有三个时间字段,如表 1 所示. 表 1: 文件的三个时间字段 说明 字段 st_atime 文件数据的最后访问时间 st_mtime ...
 - 文件和目录之chmod和fchmod函数
		
本篇博文内容摘自<UNIX环境高级编程>(第二版),仅作个人学习记录所用.关于本书可参考:http://www.apuebook.com/. 这两个函数使我们可以更改现有文件的访问权限: ...
 
随机推荐
- 【mysql】mysql索引及优化学习
			
一般优化mysql首先看查找的数据有没有用到索引,没有索引就加索引,有索引时候避免索引失效.(如果优化器觉得不需要索引就能返回所需要的数据暂不考虑) 看下面两条语句 MySQL [release_te ...
 - Codeforces Round #516 (Div. 2)D. Labyrinth(BFS)
			
题目链接:http://codeforces.com/contest/1064/problem/D 题目大意:给你一个n*m的图,图中包含两种符号,'.'表示可以行走,'*'表示障碍物不能行走,规定最 ...
 - springAop 使用@Around,@After等注解时,代码运行两边的问题
			
springAop使用@Around,@After等注解时,代码运行两边的问题 将@Component注解删掉就好了
 - java面试——多线程
			
背景:java知识比较宽泛,最好对每一类知识点进行分类总结,方便后面学习查看.该文主要用来总结多线程方面的知识点. 并发与并行的概念 并发性(concurrency)和并行性(parallel)是两个 ...
 - Vue+koa2开发一款全栈小程序(1.课程介绍+2.ES6入门)
			
1.课程介绍 1.课程概述 1.做什么? Vue+koa2开发一款全栈小程序 2.哪些功能? 个人中心.图书列表.图书详情.图书评论.个人评论列表 3.技术栈 小程序.Vue.js.koa2.koa- ...
 - P2602 [ZJOI2010]数字计数
			
https://www.luogu.org/problemnew/show/P2602 数位dp #include <bits/stdc++.h> using namespace std; ...
 - 转:在Struts 2中实现文件上传
			
(本文转自:http://www.blogjava.net/max/archive/2007/03/21/105124.html) 前一阵子有些朋友在电子邮件中问关于Struts 2实现文件上传的问题 ...
 - YII 框架在windows系统下的安装
			
第一步,下载yiii框架 http://www.yiichina.com 第二步安装: 1.首先需要下载应用模板,分为基础模板和高级应用模板,这里我以高级应用模板为例子 : 去这里现在高级应用模板 h ...
 - (Set){A} + {B} hdu1412
			
{A} + {B} 链接:http://acm.hdu.edu.cn/showproblem.php?pid=1412 Problem Description 给你两个集合,要求{A} + {B} ...
 - Druid 数据库连接池
			
druid 数据库连接池 由阿里提供 步骤 1 导包 durid1.0.9 jar 包 2 定义配置文件 必须是 properties文件 名字任意 位置也任意 3 获得数据库连接池对象 通过 Dur ...