在 macOS 上监听文件变化
本文介绍了在 macOS 系统中监听文件变化的方法。作者探讨了使用 kqueue、FSEvents 以及第三方工具等多种方案,并对比了各自的优缺点。通过实际代码示例,帮助开发者选择最适合其应用场景的文件监控方案。
背景速读
- 这篇技术笔记讨论的是 macOS 上监控文件变化(例如当用户修改、新建或删除文件时,程序能立刻感知并做出反应)的底层机制。
- 关键人物/项目:作者 Alex Chan 是一名英国软件工程师,常在个人博客分享 macOS、Python 和系统编程的实用技巧;文中的 kqueue 是 BSD 内核(macOS 的内核 XNU 即源自 BSD)提供的高性能事件通知接口,FSEvents 是苹果在 macOS 10.5 引入的专用文件系统事件框架。
- 背景:常见的跨平台文件监控库(如 watchfiles 或 watchdog)在 macOS 上通常依赖 kqueue,但 kqueue 无法递归地监控子目录,实现复杂且容易遗漏事件;而 FSEvents 虽能高效递归监控,却又取消了某些行为细节。开发者需要理解这些差异才能写出可靠的文件监听程序。
- 为什么重要:文件变化监听是代码热重载、自动构建、文件同步、备份软件等工具的核心功能——选错 API 可能导致程序漏掉文件修改或性能严重下降。