#include <iostream>
#include <vector>
#include <map>
using namespace std;
#define PCAP_PATH_NAME "/fwlog/bugreport/pcap/"
map<int, vector<string>> file_all;
void initial_map()
{
DIR *dir_content;
DIR *dir_file;
struct dirent* dir_ent;
struct dirent* dir_ent_file;
vector<string> tmp;
dir = opendir(PCAP_PATH_NAME);
if(dir == NULL)
{
prinf("open dir fail\n");
return 0;
}
while((dir_ent = readdir(dir)) != NULL)
{
if(dir_ent->d_type == mulu)
{
string tmp = PCAP_PATH_NAME;
tmp +="/";
tmp +=dir_ent->d_name;
dir_file = opendir(tmp.c_str());
if(dir_file == NULL)
{
printf("open file dir fail\n");
return 0;
}
while((dir_ent_file = readdir(dir_file)) != NULL)
{
tmp.push_back(string(dir_ent_file->d_name));
}
}
int sid = atoi(dir_ent->d_name);
file_all.insert(pair<int vector<string>>(sid,tmp);
tmp.clear();
}
}
bool find_sid_dir(int sid)
{
map<int, vector<string>>::iterator it = file_all.find(sid);
if(it != file_all.end());
{
return true;
}
else
{
return false;
}
}
map的大小
map.size();
if(file_all.size() >= 100)
int find_dir_earlist()
{
string str_ret = "";
struct stat buf;
time_t earlist;
map<int, vector<string>>::iterator it;
for(it = file_all.begin(); it != file_all.end(); it++)
{
string dir_name = PCAP_PATH_NAME;
dir_name += "/";
dir_name += atoi(it->first);
stat(dir_name.c_str(), &buf);
if(it == file_all.begin())
{
earlist = buf.st_mtime;
str_ret = dir_name;
}
if(buf.st_mtime < earlist)
{
earlist = buf.st_mtime;
str_ret = dir_name;
}
}
return it->first;
}
//删除文件夹用我自己的调用system函数来执行
//删除sid目录
调用file_all.erase(sid);
mkdir//创建目录
//创建成功加入到file_all这个map中
//失败回滚
int file_count(int sid, string &ear_file)
{
int count = 0;
time_t earlist;
struct stat buf;
stringstream ss;
string out;
map<int, vector<string>>::iterator it;
for(it = file_all.begin(); it != file_all.end(); it++)
{
string file_path = "PCAP_PATH_NAME";
file_path +="/";
ss<<it->first;
ss>>out;
file_path += out;
count += it->second.size();
vector<string>::iterator it1;
for(it1 = it->second.begin(); it1 != it->second.end(); it++)
{
stat(file_path.c_str(),&buf);
if(it1 == it->second.begin() && it == file_all.begin())
{
ear_file = file_path;
earlist = buf.st_mtime;
}
else
{
if(earlist > buf.st_mtime)
{
ear_file = file_path;
earlist = buf.st_mtime;
}
}
}
}
return count;
}
if(file_count() > 100)
{
//删除文件
//创建文件,加入map,写文件
}
分享到:
相关推荐
代码运行说明: 1、 安装运行项目所需的python模块,包括tensorflow | numpy | keras | cv2 2、 train.py用于训练垃圾分类模型,由于训练的数据量过于庞大,因此不一并上传 3、 predict.py用于预测垃圾的类别,首先...
可在软著申请时使用的代码文档整理输出工具,可选择多个特定目录,设置多类型文件,指定选择生成代码文档,可操作性很好,并且在生成word代码文档时,过滤了所有空白行和注释,过滤的注释类型涵盖mysql、java、php、...
代码随想录-八股文 pdf
, 本书分为21章,覆盖恶意代码行为、恶意代码静态分析方法、恶意代码动态分析方法、恶意代码对抗与反对抗方法等,并包含了shellcode 分析,C++恶意代码分析,以及64 位恶意代码分析方法的介绍。本书多个章节后面都配...
,网页要求的总数量太多?...多套(HTML+CSS+JS)网页设计的学生期末大作业,都符合学校或者学生考试期末作业的水平,都是div+css框架代码写的,可满足大学生网页大作业网页设计作业需求, 喜欢的可以下载!
YOLOV5口罩检测数据集+代码+模型 2000张标注好的数据+教学视频 代码的下载地址在:https://gitee.com/song-laogou/yolov5-mask-42 大家可以按照这里的视频教程配置环境:...
计算机操作系统实验代码,包括先来先服务FCFS和短作业优先SJF进程调度算法、时间片轮转RR进程调度算法、预防进程死锁的银行家算法、动态分区分配算法、虚拟内存页面置换算法、磁盘调度算法
5款Android Studio中代码着色插件。博文地址:http://blog.csdn.net/gao_chun/article/details/49154381
VMD算法的原matlab原代码 在代码中本人添加了详细的注释,看源代码期间配合本人发表的博客会实现VMD的快速入门
HTML动态爱心代码满屏爱心免费下载
压缩包内包含源代码,项目文档,apk文件,运行各个界面截图。app使用的是sqlite数据库,使用的核心类及其组件:Base Adapter,Fragment,View Pager,Alert Dialog.Builder,Option,Animation Draw able(关键帧...
25个经典网站源代码 有简约的有时尚的方便大家参考、模仿。
C# MES_开源源代码
5、界面中的发送验证码为示例,如需要更多功能,请根据自身的逻辑需求完成相应的代码功能; 6、从本界面的相关代码中可以使初学者简单的了解界面的布局方式以及颜色搭配; 7、界面中所有的监听均为举例说明,如有...
python做的《点燃我温暖你》中李峋的同款爱心代码,最还原的
CodeCompare是一款优秀的代码比较工具,可单独使用,也可集成到Visual Studio 2010, 2012, 2013, 2015中使用,附破解工具,具体见https://blog.fishlee.net/2015/09/13/code-compare-pro-4-1-78-reg/