linux如何用c语言修改文件的时间戳为指定时间
时间: 2024-05-13 16:19:38 浏览: 128
c 更改文件修改日期
4星 · 用户满意度95%
可以使用 `utime` 函数来修改文件的时间戳,该函数的原型如下:
```c
#include <utime.h>
int utime(const char *filename, const struct utimbuf *times);
```
其中,`filename` 表示要修改时间戳的文件名,`times` 是一个 `utimbuf` 结构体指针,表示新的访问时间和修改时间。
`utimbuf` 结构体定义如下:
```c
struct utimbuf {
time_t actime; // 新的访问时间
time_t modtime; // 新的修改时间
};
```
下面是一个示例代码,将文件的时间戳修改为指定时间:
```c
#include <stdio.h>
#include <utime.h>
#include <sys/stat.h>
int main() {
const char *filename = "test.txt"; // 要修改的文件名
struct stat statbuf;
struct utimbuf new_times;
if (stat(filename, &statbuf) < 0) {
perror("stat error");
return -1;
}
// 设置新的访问时间和修改时间
new_times.actime = statbuf.st_atime; // 访问时间不变
new_times.modtime = 1609459200; // 2021年1月1日 00:00:00
if (utime(filename, &new_times) < 0) {
perror("utime error");
return -1;
}
printf("File time has been changed successfully!\n");
return 0;
}
```
注意,`utime` 函数修改的是文件的访问时间和修改时间,而不是创建时间。如果要修改创建时间,需要使用 `utimensat` 函数。
阅读全文