首页 > 文件监视器

文件监视器

受人所托,写了个文件监视器小程序,总共300+行,实现对指定文件的监视功能,当文件新增,删除,或被修改,程序予以记录并报告。

   实现是通过不断扫描指定的文件,通过比较两次扫描的状态来判断文件的变化。



文件状态数据结构:

/* filestat struct for monitoring */

typedef struct filestat

{

    char f_name[FNAME_MAX];

    struct stat f_stat;

    int f_flag;    /* 0 for del,

                  1 for add, 2 for modified , 3 for unchanged */

    struct filestat *next;

}filestat;



   设计思路:对指定的文件,文件夹进行扫描,获取文件状态并记录在statlist链表中,没扫描一个文件,在statlist中查找,如果没有找到,则为新增文件,插入到链表,并置f_flag为1;如果找到,比较mtime和ctime,如果相同,则说明,文件内容,Inode都没有发生变化,则文件未发生变化,置f_flag为3,如果不同,则说明文件被修改过,置f_flag为2。

    扫描完成后对链表执行check操作,如果为1(而且不是第一次扫描),打印添加日志,如果为2打印修改日志,为3则为变化,check后置f_flag为0,所以当check中的f_flag为0时,说明文件被删除。。。。



   调试中遇到段错误,虽然后来改过来了,但还是不知道错误处在哪里。第一次使用gdb发现程序问题,对执行过程进行跟踪。并使用宏来决定是否打印调试日志(这点很重要,跟一个师兄学的,在程序里用了下)。



//#define MONITOR_DEBUG   /* for debug, comment it to run in non debug mod */

 

#ifdef MONITOR_DEBUG

    #define PDEBUG(format, arg...) fprintf(stderr, format, ##arg)

#else

    #define PDEBUG(format, arg...)

#endif



总的感觉,自己的基本功还不够扎实,linux c 里面很多东西没用过。。。加油



文件:monitor.tar
大小:20KB
下载:下载








转载于:https://www.cnblogs.com/yunnotes/archive/2013/04/19/3032538.html

更多相关:

  • 本文来自 运维人生 ,作者:fly是个稻草人链接:http://www.ywadmin.com/?id=76误删除linux系统文件了?不用急,本文将给你一个恢复linux文件的方法,让你轻松应对运维中的各风险问题。方法总比问题多~说在前面的话针对日常维护操作,难免会出现文件误删除的操作。大家熟知linux文件系统不同win有回收...

  • 原文来自SecIN社区—作者:WiHat0x00 什么是WebShell渗透测试工作的一个阶段性目标就是获取目标服务器的操作控制权限,于是WebShell便应运而生。Webshell中的WEB就是web服务,shell就是管理攻击者与操作系统之间的交互。Webshell被称为攻击者通过Web服务器端口对Web服务器有一定的操作权限,而...

  • 断电时文件系统发生了什么?硬盘又发生了什么?下一次开机时写到一半的文件在系统层面还在吗?在底层还在吗?更进一步的, 文件系统如何保证事务性, 会不会存在某种极端情况导致例如最后几个bit还没写完, 文件系统却认为它成功了的情况?回答不限任何文件系统,谢谢!下面是「北极」的回复分享断电的一瞬间,很多事情是无法确定的:1. 你无法确定...

  • 接到项目需求。需要搭建一个页面进行交互,慢慢来b (2).jpg使用python django框架进行页面的搭建在项目文件下打开窗口,输入命令;django-admin startproject helloword#在文件helloword/helloword/创建view.py在view.py文件中输入以代码from django....

  • 常见的错误集合解决方案(一)No.1提示错误'Microsoft.VC90.CRT,version="9.0.21022.8"把Microsoft.NET Framework 3.5.1下面的全部勾选上。No.2解决Qt Designer设计的图标但是VS生成不显示问题描述:在Qt designer中为菜单栏和工具栏设计的图标,但是...

  • 用python编写乘法口诀表的方法 发布时间:2020-08-25 11:46:35 来源:亿速云 阅读:60 作者:小新 用python编写乘法口诀表的方法?这个问题可能是我们日常学习或工作经常见到的。希望通过这个问题能让你收获颇深。下面是小编给大家带来的参考内容,让我们一起来看看吧! 第一种:使用for遍历循环嵌套for x in...

  • //很长一段时间我都只使用以下方式做数组循环,具体原因看数据 var aa = for (var i = 0, l = aa.length; i < l; i++) { var a = aa[i];} 数据采集图片来源于网友 很明显,for循环第二种方式完胜!!! 至于for in、forEach什么的,不知道甩他们多少...

  • 目录 1. Scene Graph Generation with External Knowledge and Image Reconstruction 2. Knowledge Acquisition for Visual Question Answering via Iterative Querying Author...

  • 基础题1: 输入一个正整数 n (1≤n≤10)和n 阶方阵a的元素,如果方阵a中的所有元素都沿主对角线对称,输出“Yes”, 否则,输出“No”。主对角线为从矩阵的左上角至右下角的连线,方阵a中的所有元素都沿主对角线对称指对所有i, k,a[i][k]和a[k][i]相等。输入输出示例如下: 输入: 3 1 2 3 4 5 6 7...

  • 程序流程控制 分支 顺序 循环 if switch&case 1 2 3 调整 break 1.6 前 switch(byte、short、char、int) 1.7 可放String 循环 while(次数不确定) do while for(确定次数) break(跳出本层循环) continue(跳出本次循环)     *   2...