我正在 Linux 上开发我的程序,是否有一种编程方式来检测另一个应用程序何时在特定文件夹下创建/复制文件。我想在创建新文件时尽快检测到它,并且我想处理该文件。
据我研究,我可以使用 inotify 完成此操作。有没有更好的选择?
http://en.highscore.de/cpp/boost/asio.html上的http://www.highscore.de/boost/dir_monitor.zip是一个跨平台的 C++ Boost 解决方案,虽然我还没有尝试过.
http://boost.2283326.n4.nabble.com/ASIO-file-monitoring-help-td4645105.html的代码使用它是错误的,修复看起来是让作者假设的更多对象可能是临时的而是永久的。
inotify 是 Linux 内核提供的适当 API。您的工具包可能在它之上具有便利性,例如KDirWatch
来自 libkdecore,但它在内部使用 inotify。
当您的程序是跨平台的时,使用工具包中的 API 是一个好主意。
http://man7.org/linux/man-pages/man7/fanotify.7.html是另一种选择
这是一篇很好的文章,总结了所有方法http://www.lanedo.com/filesystem-monitoring-linux-kernel/