在操作系统级别,如何知道某些内容已发生变化(如文件更改)
e.g:
在节点中,我们可以监视文件并在其更改时执行某些操作
fs.watch(file_path,function(){
//do something while the file's changed;
});
有人可以给我一个关于它如何真正起作用的简短直觉/想法/关键词
我可以提出的一个问题是,当我在vim中点击:w
时,它以某种方式调用了一些系统* fake_save_file *函数,并且在这个* fake_save_file *函数中,它将一些事件发送到其他地方
答案 0 :(得分:2)
您可能知道内核将文件系统中的文件索引为文件描述符。通过监听对这些文件描述符的更改来实现文件监视。在linux inotify中做到了。
无论何时打开,读取,写入/修改或移动文件,内核都会对文件描述符发出操作。 Inotify通过跟踪这些操作并向您展示来扩展文件系统。
您提供的示例有些不正确。 fake_save_file由文本编辑器vim创建,用于存储所做的临时更改,除非用户实际保存它。当您使用:w
保存时,编辑器会将您的actual_save_file替换为fake_save_file的副本。
作为用户,您将看到您的actual_save_file。当您在vim中输入:w
时,这会发生变化。当vim修改其内容时,您将收到通知。
答案 1 :(得分:0)
pyinotify。请检查一下。