Linux gcc或者g++编程 下如何监视文件夹中文件的改变???

Linux gcc或者g++编程 下如何监视文件夹中文件的改变???,第1张

从编程实现上来说,linux下做这个事情,要比windows上做简单,windows上有相关API提供接口,比如VC下的ReadDirectoryChanges函数,但其实它的功能并不是很完善,我之前曾经做过一个windows下类似的工具,如果要做到很完善的功能,要涉及到windows底层驱动。而linux下做这个事情就简单多了,从内核2.6.13开始,inotify编程接口就已经被加入到系统内核中,用来监控文件系统事件,它能监控到的事件包含文件/文件夹的新建,删除,修改,属性被修改,打开等等,功能比windows API提供的要丰富得多。在linux下输入 man inotify即可查看该接口的编程手册,要实现对某个文件夹的监控,只需要使用该接口提供的inotify_init, inotify_add_watch,  inotify_rm_watch三个函数即可。具体可以百度inotify,很容易就能找到相关示例代码。

附Linux下inotify编程接口部分截图:

点击图片可以看大图。

我没法给你源码,但可以给你思路:

【最简单粗暴的】

1. 写一个死循环

2. sleep 个 100 毫秒

3. 第一次启动建立一个HashMap<File, Date>,扫描所有文件并读取创建日期记录下来(包括子文件夹)

4. 记录全部文件的数量 fileCount, lastFileCount

5. 检查是否数量有变,如果木有就没有新增文件

6. 如果有变化,。。。。你懂的,再扫找出不在HashMap里面的就是新增的了

【特殊参考】

参考tomcat、jboss这类服务器软件如何扫面检测部署文件夹下面文件变动的

【高阶】

参考防毒软件设计原理,截获系统IO,有对你指定文件夹的Access *** 作时,按需记录

1、首先启动linux *** 作系统在进入到界面。

2、输入ls -l回车可以看到下图wr-r-r,r表示文件可以读取,w表示可写,x表示可执行,r--是可读的,不能写入,不能执行。

3、也可以看到其它文件看看,这里看是etc配置文件。

4,这里的权限是root,所以root是最大的。在Linux上,您可以查看指定文件夹的权限。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/8500811.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-17
下一篇 2023-04-17

发表评论

登录后才能评论

评论列表(0条)

保存