【问题标题】:How system listen to file change?系统如何监听文件变化?
【发布时间】:2014-03-04 12:45:13
【问题描述】:

OS级别,如何实现知道某事已更改(如文件更改)

例如:
在节点中,我们可以监控一个文件并在它发生变化时执行一些操作

fs.watch(file_path,function(){
  //do something while the file's changed;
});

谁能给我一个简短的直觉/想法/关键字关于它是如何工作的

我能想到的是,当我在 vim 中点击 :w 时,它以某种方式调用了一些系统 *fake_save_file* 函数,并且在这个 *fake_save_file* 函数中,它将一些事件调度到其他地方

【问题讨论】:

  • Linux 有 inotify 可以用来实现它。

标签: linux node.js operating-system filesystems


【解决方案1】:

您可能知道内核将文件系统中的文件索引为文件描述符。文件监视是通过监听这些文件描述符的变化来实现的。在 linux 中 inotify 会这样做。

每当您打开、读取、写入/修改或移动文件时,内核都会对文件描述符发出操作。 Inotify 通过跟踪这些操作并向您展示它们来扩展文件系统。

你给出的例子有些不正确。 fake_save_file 由您的文本编辑器 vim 创建以存储所做的临时更改,除非您用户实际保存它。当您使用 :w 保存它时,编辑器会将您的 actual_save_file 替换为 fake_save_file 的副本。

作为用户,您将观看您的 actual_save_file。当你在 vim 中输入 :w 时,这会改变。 vim 修改内容时会通知你。

【讨论】:

    【解决方案2】:

    pyinotify 可能是你想要的。请检查它。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-02-10
      • 2010-11-26
      • 2021-09-21
      • 1970-01-01
      • 2021-03-21
      相关资源
      最近更新 更多