Поскольку первоначальный вопрос, кажется, упоминает Qt как тег, как отмечалось в нескольких комментариях здесь, поисковые системы, возможно, привели вас сюда.
Если кто-то хочет знать, как это сделать с Qt, см. http://doc.qt.io/qt-5/qfilesystemwatcher.html для Qt-версии.В Linux он использует подмножество Inotify, если оно доступно, см. Подробности на странице Qt.
В основном необходимый код выглядит следующим образом:
в mainwindow.h add:
QFileSystemWatcher * watcher;
private slots:
void directoryChanged(const QString & path);
void fileChanged(const QString & path);
и для mainwindow.cpp:
#include <QFileInfo>
#include <QFileSystemWatcher>
watcher = new QFileSystemWatcher(this);
connect(watcher, SIGNAL(fileChanged(const QString &)), this, SLOT(fileChanged(const QString &)));
connect(watcher, SIGNAL(directoryChanged(const QString &)), this, SLOT(directoryChanged(const QString &)));
watcher->addPath("/tmp/"); // watch directory
watcher->addPath("/tmp/a.file"); // watch file
также добавьте слоты в mainwindow.cpp, которые вызываются при обнаружении изменения файла / каталога:
void MainWindow::directoryChanged(const QString & path) {
qDebug() << path;
}
void MainWindow::fileChanged(const QString & path) {
qDebug() << path;
}