当前位置:  开发笔记 > 运维 > 正文

检测对打开文件的更改

如何解决《检测对打开文件的更改》经验,为你挑选了2个好方法。

假设我有一个打开的文件.如何在后台检测文件何时被另一个程序更改.如果某个文本编辑器被另一个进程更改,则它可以检测并更新该文件.

我特意在Linux下使用C(这似乎取决于操作系统).



1> Doug..:

如果您不想使用stat,并且不介意特定于Linux,则可以使用inotify API.你的内核需要是2.6.13或更高版本以及glibc 2.4或更新版本(如果你的目标是过去2或3年内的任何内容,它们将会是你的内核).该API基本上是给你一个文件描述符,你可以pollselect,并read获取有关修改的文件的信息.如果你的应用是互动的,就像一个编辑器,那么它通常有某种事件循环调用的selectpoll,并可以观看事件您的inotify文件描述符.

使用inotify通常是首选stat,因为您可以立即收到通知,并且在文件未更改时不会浪费时间和磁盘I/O轮询.缺点是可能无法在NFS或其他网络文件系统上运行,并且它不可移植.

IBM Developerworks的这个页面给出了一些示例C代码,手册页是权威参考.



2> Aif..:

使用stat功能.页面中的示例.

推荐阅读
手机用户2502852037
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有