上次写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
分享到:
相关推荐
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...
请教C语言问题
延性系数的问题-双线性文件.m 本帖最后由 王超群 于 2012-6-13 23:50 编辑 请教大婶们 这个程序是求单自由度的双线性响应。现在的问题是,怎样把这个程序改成依据延性系数变化的响应;也就是让这个程序依据...
在IT行业中,问题请教工程是一项常见且至关重要的任务。它涉及到技术咨询、故障排查、解决方案设计等多个环节,是提升技术水平和团队协作效率的关键。在这个场景下,"问题请教工程"可能指的是开发者或工程师在遇到...
本项目是一个基于C语言的银行存取款管理系统,旨在提供一个用户友好的界面,使得用户可以方便地进行存款、取款等操作,解决传统银行服务中的一些不便。该系统分为多个模块,每个模块都有特定的功能,以实现完整的...
从给定的文件标题、描述以及部分内容来看,讨论的核心是如何实时获取...总之,实时获取系统每个进程占用的CPU是一项技术挑战,但通过合理选择方法和工具,可以有效监控系统状态,为系统优化和故障排查提供有力支持。
搭建一个简易的C语言平台是学习C语言的重要步骤,它能帮助我们清晰地理解程序的编译、链接过程,以及各个文件在其中的作用。在这个环境中,我们通常会使用TC(Turbo C)编译器,这里特别提到了TC 2.0版本。以下是...
预期目标是构建一个实用且可行的视频监控系统架构,实现基本的监控功能,并通过实际操作验证其性能。 三、系统设计与实现 1. 系统设计:视频监控系统采用分散到集中管理模式,通过网络连接各个监控点,提供统一管理...
1. **模型建立**:首先,需要建立一个固态系统的模型,这可能是一个简单的晶格结构,如立方晶体,或者是更复杂的多原子结构。这个模型包括原子的位置、类型以及相互作用力场的参数。 2. **哈密顿量**:在量子力学中...
从给定的文件信息来看,这是一份关于C语言课程的教学大纲和初步介绍。下面将对其中的关键知识点进行详细解析: ### C语言课程概览 #### 课程目标与要求 - **认真听讲**:强调学生需全神贯注于课堂讲解,确保理解每...
SVPWMSimulink问题请教-svpwm.mdl 这个论坛里网有上传的SVPWM文件,为什么仿真的时候总是提示TS没有定义,在哪定义TS?
从给定的文件标题“C语言程序+黄迪明.pdf”和描述“C语言程序+黄迪明.pdf,方便0基础的学生自学。”中,我们可以推断出这份文档主要聚焦于C语言的基础教学,旨在帮助初学者掌握C语言编程的基本概念和技术。C语言是一...
本次课程设计的目标是使用C语言开发一个“学生信息管理系统”,该系统具备数据库管理的基本功能,如数据库的建立、记录的增删改查、显示以及保存和备份。通过这个项目,学生可以深入理解C语言的编程知识,包括条件...
为了保持设计的一致性和可维护性,建议创建和维护一个自定义封装库,将常用和特定项目所需的封装集中存储。这有助于避免因频繁导入不同来源的封装库导致的混乱。 5. **协同设计中的封装库同步**: 在团队协作中,...
结构体则允许将不同类型的数据显示为一个整体,配合fopen和fclose函数,可以实现文件的读写,展示了C语言在文件操作上的灵活性。 学习C语言的过程中,耐心和细心至关重要,因为一个小小的编程错误可能导致程序无法...
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...
C语言课程设计是一个旨在帮助学生深入理解和应用C语言编程的实践项目。以下是一些关于C语言课程设计的基本步骤和建议: 明确目标和需求:首先,你需要与授课教师或课程设计的相关人员沟通,明确课程设计的需求。这...