用c语言定时删除文件夹中的文件
时间: 2023-05-27 22:01:46 浏览: 233
基于51单片机的合作式任务调度器 在Keil中编译通过
4星 · 用户满意度95%
以下是一个简单的示例,每隔一段时间删除指定目录中的所有文件。
```c
#include <stdio.h>
#include <stdlib.h>
#include <dirent.h>
#include <unistd.h>
#include <string.h>
#include <time.h>
#define TIME_INTERVAL 60 // 每60秒删除一次文件
#define DIR_PATH "/tmp/" // 文件夹路径
void delete_files()
{
DIR *dir;
struct dirent *entry;
dir = opendir(DIR_PATH);
if (dir == NULL) {
perror("opendir");
exit(EXIT_FAILURE);
}
while ((entry = readdir(dir)) != NULL) {
if (entry->d_type == DT_REG) { // 如果是文件
char path[1024];
sprintf(path, "%s%s", DIR_PATH, entry->d_name); // 构造文件路径
if (remove(path) == -1) { // 删除文件
perror("remove");
}
}
}
closedir(dir);
}
int main()
{
while (1) {
time_t current_time = time(NULL);
delete_files();
sleep(TIME_INTERVAL - current_time % TIME_INTERVAL);
}
return 0;
}
```
说明:
- `opendir`:打开指定路径下的文件夹。
- `readdir`:读取文件夹中的所有文件和子文件夹。
- `d_type`:目录项类型,`DT_REG`表示是文件。
- `remove`:删除指定文件。
- `time`:获取当前时间。
- `sleep`:暂停程序执行一段时间。计算出下一次定时删除的时间,然后暂停到那个时间再继续执行。
注意:该程序只删除指定文件夹下的所有文件,但不会删除子文件夹。如果要删除子文件夹,可以在`delete_files`函数中递归调用该函数。另外,一定要仔细检查文件夹路径,避免删除了不该删除的文件。
阅读全文