假设我有一个打开的文件.如何在后台检测文件何时被另一个程序更改.如果某个文本编辑器被另一个进程更改,则它可以检测并更新该文件.
我特意在Linux下使用C(这似乎取决于操作系统).
如果您不想使用stat
,并且不介意特定于Linux,则可以使用inotify API.你的内核需要是2.6.13或更高版本以及glibc 2.4或更新版本(如果你的目标是过去2或3年内的任何内容,它们将会是你的内核).该API基本上是给你一个文件描述符,你可以poll
或select
,并read
获取有关修改的文件的信息.如果你的应用是互动的,就像一个编辑器,那么它通常有某种事件循环调用的select
或poll
,并可以观看事件您的inotify文件描述符.
使用inotify通常是首选stat
,因为您可以立即收到通知,并且在文件未更改时不会浪费时间和磁盘I/O轮询.缺点是可能无法在NFS或其他网络文件系统上运行,并且它不可移植.
IBM Developerworks的这个页面给出了一些示例C代码,手册页是权威参考.
使用stat功能.页面中的示例.