`
iMzw
  • 浏览: 193967 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

请教一个问题 - 监控文件系统变化( C 语言)

阅读更多
上次写C的代码已经是2年前了, 几乎连main函数怎么写都忘记了.
最近我需要一监控文件系统的, 主要用处就是, 我一保存文件, 就调用一个程序. 通过Google 了好长一段时间. 知道linux 上有个 inotify 的东西. free bsd(mac os) 上有个 kqueue 的东西, windows没看(除了玩儿,我不怎么用它).

sf上 inotify-tools 的项目, 包装了inotify. 用起来不错.

free bsd(mac os) 就没这么幸运了, 只能自己写. 下面的程序基本可以实现, 但问题是只能监控当前目录, 不能监控子目录.



伟大的C, 我跟他很是不熟. 希望大家帮帮忙, 指导下如何实现监控子目录,子目录的子目录。

UPDATE:我的想法是遍历所有子目录,在每个目录上同样的操作。

...


#include <sys/event.h>
#include <sys/time.h> 
#include <fcntl.h>
#include <stdio.h>
#include <stdlib.h> 

int main(void){
   int f, kq, nev;
   struct kevent change;
   struct kevent event;

   kq = kqueue();
   if (kq == -1)
       perror("kqueue");

   f = open("/Users/abc/test", O_RDONLY);
   if (f == -1)
       perror("open");

   EV_SET(&change, f, EVFILT_VNODE,
          EV_ADD | EV_ENABLE | EV_ONESHOT,
          NOTE_DELETE | NOTE_EXTEND | NOTE_WRITE | NOTE_ATTRIB,
          0, 0);
   

   for (;;) {
       nev = kevent(kq, &change, 1, &event, 1, NULL);
       if (nev == -1)
           perror("kevent");
       else if (nev > 0) {
           if (event.fflags & NOTE_DELETE) {
             printf("File deleted\n");
             break;
           }
           if (event.fflags & NOTE_EXTEND || event.fflags & NOTE_WRITE){
             printf("File modified\n");
             system("build.sh");
           }
           if (event.fflags & NOTE_ATTRIB){
             printf("File attributes modified\n");
            //system(script);
           }
       }
   }

   close(kq);
   close(f);
   return EXIT_SUCCESS;
}



--
I'm a dog chasing cars.

It's Neal Mi.

  • 大小: 16 KB
2
1
分享到:
评论

相关推荐

    数据结构课程设计-导游系统-C语言实现.zip

    C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...

    中国大学MOOC-浙江大学-翁恺老师网课-C语言程序设计,我从零开始自学编程的记录。.zip

    C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...

    C语言课程设计-职工管理系统.zip

    C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...

    编译原理课程设计:自制C-(C-minus)语言编译器,实现词法分析和语法分析。.zip

    C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...

    请教C语言问题

    请教C语言问题

    延性系数的问题-双线性文件.m

    延性系数的问题-双线性文件.m 本帖最后由 王超群 于 2012-6-13 23:50 编辑 请教大婶们 这个程序是求单自由度的双线性响应。现在的问题是,怎样把这个程序改成依据延性系数变化的响应;也就是让这个程序依据...

    问题请教工程,问题请教工程

    在IT行业中,问题请教工程是一项常见且至关重要的任务。它涉及到技术咨询、故障排查、解决方案设计等多个环节,是提升技术水平和团队协作效率的关键。在这个场景下,"问题请教工程"可能指的是开发者或工程师在遇到...

    C语言银行管理系统设计.doc

    本项目是一个基于C语言的银行存取款管理系统,旨在提供一个用户友好的界面,使得用户可以方便地进行存款、取款等操作,解决传统银行服务中的一些不便。该系统分为多个模块,每个模块都有特定的功能,以实现完整的...

    如何实时获取系统每个进程占用的CPU?--讨论及请教

    从给定的文件标题、描述以及部分内容来看,讨论的核心是如何实时获取...总之,实时获取系统每个进程占用的CPU是一项技术挑战,但通过合理选择方法和工具,可以有效监控系统状态,为系统优化和故障排查提供有力支持。

    搭建一个简易的C语言平台

    搭建一个简易的C语言平台是学习C语言的重要步骤,它能帮助我们清晰地理解程序的编译、链接过程,以及各个文件在其中的作用。在这个环境中,我们通常会使用TC(Turbo C)编译器,这里特别提到了TC 2.0版本。以下是...

    视频监控系统设计实现分析范文.doc

    预期目标是构建一个实用且可行的视频监控系统架构,实现基本的监控功能,并通过实际操作验证其性能。 三、系统设计与实现 1. 系统设计:视频监控系统采用分散到集中管理模式,通过网络连接各个监控点,提供统一管理...

    liegie_文件有点问题请教一下_

    1. **模型建立**:首先,需要建立一个固态系统的模型,这可能是一个简单的晶格结构,如立方晶体,或者是更复杂的多原子结构。这个模型包括原子的位置、类型以及相互作用力场的参数。 2. **哈密顿量**:在量子力学中...

    c语言课件(01)

    从给定的文件信息来看,这是一份关于C语言课程的教学大纲和初步介绍。下面将对其中的关键知识点进行详细解析: ### C语言课程概览 #### 课程目标与要求 - **认真听讲**:强调学生需全神贯注于课堂讲解,确保理解每...

    SVPWMSimulink问题请教-svpwm.mdl

    SVPWMSimulink问题请教-svpwm.mdl 这个论坛里网有上传的SVPWM文件,为什么仿真的时候总是提示TS没有定义,在哪定义TS?

    C语言程序+黄迪明.pdf

    从给定的文件标题“C语言程序+黄迪明.pdf”和描述“C语言程序+黄迪明.pdf,方便0基础的学生自学。”中,我们可以推断出这份文档主要聚焦于C语言的基础教学,旨在帮助初学者掌握C语言编程的基本概念和技术。C语言是一...

    C语言学生管理系统课程设计报告书

    本次课程设计的目标是使用C语言开发一个“学生信息管理系统”,该系统具备数据库管理的基本功能,如数据库的建立、记录的增删改查、显示以及保存和备份。通过这个项目,学生可以深入理解C语言的编程知识,包括条件...

    AD封装库导入eda问题请教-封装库.zip

    为了保持设计的一致性和可维护性,建议创建和维护一个自定义封装库,将常用和特定项目所需的封装集中存储。这有助于避免因频繁导入不同来源的封装库导致的混乱。 5. **协同设计中的封装库同步**: 在团队协作中,...

    完整word版-C语言课程总结.doc

    结构体则允许将不同类型的数据显示为一个整体,配合fopen和fclose函数,可以实现文件的读写,展示了C语言在文件操作上的灵活性。 学习C语言的过程中,耐心和细心至关重要,因为一个小小的编程错误可能导致程序无法...

    WLAN与TD-LTE系统在2.4GHz频段共存干扰

    该方法将对基站和移动台的发射功率、基站的负载等情况进行仿真,将整个系统的运转区间划分为若干个间隔,每两个间隔之间为一个快照(Snapshot)取样时刻,将所有快照时刻的取样结果进行记录,用统计方法加以分析,...

    2019-2020年C语言课程设计作业.zip

    C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...

Global site tag (gtag.js) - Google Analytics