当前位置:  技术问答>linux和unix

请教一个关于用标准C语言修改文件创建时间、修改时间和访问时间的问题。

    来源: 互联网  发布时间:2015-11-17

    本文导语:  请教一个关于用标准C语言修改文件创建时间、修改时间和访问时间的问题。 标准C里面有没有这种方法呢?我需要在Unix下运行,具体的是Solaris 9下,把某个目录下的所有文件的这三个时间属性都改成某年某月某日的...

请教一个关于用标准C语言修改文件创建时间、修改时间和访问时间的问题。

标准C里面有没有这种方法呢?我需要在Unix下运行,具体的是Solaris 9下,把某个目录下的所有文件的这三个时间属性都改成某年某月某日的00点00分。

|
utime(修改文件的存取时间和更改时间)  
相关函数  utimes,stat
 
表头文件  #include
#include
 
定义函数  int utime(const char * filename,struct utimbuf * buf);
 
函数说明  utime()用来修改参数filename文件所属的inode存取时间。
结构utimbuf定义如下
struct utimbuf{
time_t actime;
time_t modtime;
};
 
返回值  如果参数buf为空指针(NULL),则该文件的存取时间和更改时间全部会设为目前时间。
执行成功则返回0,失败返回-1,错误代码存于errno。
 
错误代码  EACCESS 存取文件时被拒绝,权限不足
ENOENT 指定的文件不存在。
 
  

 

 
utimes(修改文件的存取时间和更改时间)  
相关函数  utime,stat
 
表头文件  #include
#include
 
定义函数  int utimes(char * filename.struct timeval *tvp);
 
函数说明  utimes()用来修改参数filename文件所属的inode存取时间和修改时间。
结构timeval定义如下
struct timeval {
long tv_sec;
long tv_usec; /* 微妙*/
};
 
返回值  参数tvp 指向两个timeval 结构空间,和utime()使用的utimebuf结构比较,tvp[0].tc_sec 则为utimbuf.actime,tvp]1].tv_sec 为utimbuf.modtime。
执行成功则返回0。失败返回-1,错误代码存于errno。
 
错误代码  EACCESS 存取文件时被拒绝,权限不足
ENOENT 指定的文件不存在
 

|
没有创建时间一说。
ctime是状态变化时间,好像没有API可以更改。

|
每个文件只保持三个字段
st_atime 文件数据的最后存取时间
st_mtime 文件数据的最后修改时间
st_ctime i节点状态的最后更改时间
注意:修改时间是文件内容最后一次被修改的时间,如write操作。更改状态时间是该文件的i节点最后一次修改的时间,如chmod,chown,因为 i节点的所有信息都是与文件的实际内容分开存放的。
一个文件的存取和修改时间可以用utime函数来更改
#include
#include
int utime(const char *pathname, const struct utimbuf *times)
                             返回:若成功则为0,若出错则为-1
此函数所使用的结构是
struct utimbuf
{
     time_t actime;
     time_t modtime;
}
此结构的两个时间值是日历值,这是自从1970年1月1日,00:00:00以来国际标准时间所经过的秒数。

我们不能更改的是st_ctime指定的一个值,当调用utime函数时,此字段被自动更新。

    
 
 

您可能感兴趣的文章:

  • 请教如何将多台linux的时间,以一台时间为标准达到同步,请高手指教
  • 请教用ntpclient时间校正的问题
  • 请教,如何比较2个文件的修改时间的大小
  • 急~请教简单问题~最快时间给分~~
  • 请教一个取时间的函数,急!!!!!!!!!!!!!!!!
  • 请教时间转换问题!急!
  • 请教:Linux下的时间比较,编程怎么实现?
  • 请教:怎样在 UNIX 设置 telnet 未动作超时时间
  • 高分请教,电子邮件的发送时间问题
  • 请教关于显示时间的问题
  • 请教一下,如何用shell 编程实现删除超过一定时间以前的文件?
  • 100分请教如果用java更改本地机的系统时间
  • 请教:Linux2.6.30内核中 NAT做UDP mapping 时映射保持多长时间?
  • 我现在非常想学java,想在短时间 内有所突破。繁各位高手指点以下高分请教
  • 请教一个小问题,关于时间的
  • 请教: read一个socket, read返回需要多长时间?
  • 请教:读懂DOS代码要有什么水平,要读多长时间???
  • 请教关于date日期时间运算的问题
  • 请教优化算法减少CPU处理时间
  • 请教stat函数时间转换
  • 请教一下,如何修改ubuntu命令,使其可以直接修改kvm虚拟机配置
  • 请教下关于root密码忘记了怎么修改(除了去现场单用户修改)
  • 我是linux初学者,我修改了/ect/fstab,结果出现登陆报错,请教大家如何修改
  • 【请教】怎么修改linux内核参数
  • 请教命令passwd如何修改文件/etc/passwd
  • 请教,如何修改在虚拟机vmware中安装的linux的ramdisk大小?
  • 请教如何在程序中修改机器的IP地址?
  • 请教老鸟怎么修改硬件配置?
  • 请教linux下修改文件名称的问题
  • linux下script修改文件名的问题,请教!
  • (菜鸟请教)还有修改/etc/passwd文件用什么函数呢?
  •  
    本站(WWW.)旨在分享和传播互联网科技相关的资讯和技术,将尽最大努力为读者提供更好的信息聚合和浏览方式。
    本站(WWW.)站内文章除注明原创外,均为转载、整理或搜集自网络。欢迎任何形式的转载,转载请注明出处。












  • 相关文章推荐
  • 请教,如何动态创建组件对象。送分!
  • 请教:进程创建和进程状态有关问题
  • 请教一个按照规则批量创建*.txt文件的问题
  • 请教各位大虾:在UNIX下创建普通用户的问题
  • 请教各位大牛~~那个系统调用open()创建的是什么类型的文件?
  • 请教centos xen下用virt-manager创建虚拟机中的问题
  • 请教:不创建cdev,能访问spi或i2c设备么?
  • 请教高高手:如何规划和创建数据池?并使用数据池?有资料也行
  • 有程序创建的目录,有时会发生权限为“dr----x--t”的情形,请教各位可能是什么原因引起的?
  • 请教:创建守护进程的代码中,一句迷惑(没分了,实在抱歉):
  • 请教一个关于Makefile的问题。提示出错:make: *** 没有规则可以创建“ioctl”需要的目标“gcc”。 停止。
  • 急急急,请教如何不断创建,销毁窗口,有源码!
  • 请教,请教,这个问题是为什么????
  • 请教本地硬盘安装问题请教本地硬盘安装问题
  • ■请教■请教redhat最基本的问题!
  • 请教一个 shell 问题,我用下面这个 shell 语句总是失败,请教
  • 高分请教,各位大侠,请教一个问题,理论高手请进??谢谢
  • 请教Linux下pgadmin3-1.0.2的编译和安装!!高分请教!
  • 各位大虾,请教装了REDHAT9操作系统后,启动时无法引导到LINUX,请教该如何解决啊
  • 请教,请教,,,一定要看!!一定要看!!
  • 请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • :请教高手,小弟打印width=1500,height=600(A3纸)的Applet,在预览中是该区域是黑的,打印出来也是黑的,请教高手解决一下
  • 请教象我这样的硬盘应如何安装Linux,我昨天试装了,但有问题。(老问题了,也看了前面的帖子,但还是来请教,请多指教)
  • 请教这种循环的执行过程
  • 请教两个redhat9问题
  • 请教如何在指定目录下查找包含指定文字的文件
  • 请教局域网中如何通过ip地址得到主机名
  • 请教kdevelop的问题
  • 请教linux 下的adsl拨号问题.
  • 请教,如何用虚拟订机安装liux
  • 【请教】LINUX 下SNMP的MIB开发


  • 站内导航:


    特别声明:169IT网站部分信息来自互联网,如果侵犯您的权利,请及时告知,本站将立即删除!

    ©2012-2021,,E-mail:www_#163.com(请将#改为@)

    浙ICP备11055608号-3