addWatchTargetRecursive(3) Library Functions Manual addWatchTargetRecursive(3)

addWatchTargetRecursive - 增加需要监听的文件路径,对于目录,默认启用递归监听子目录

#include <libkyfilewatcher.hpp>


class KYSDK_FILEWATCHER::FileWatcher


QStringList addWatchTargetRecursive(QString url, FileWatcherType type = PERIODIC, int attr = OPEN|CLOSE|MODIFY|DELETE, int maxdepth = 5, int recurType = DIR|REGULAR);

Link with -lkyfilewatcher.

The main function of the interface is to add file paths that need to be listened to, and for directories, recursive listening subdirectories are enabled by default.

The argument url is the file path.

The argument type is the file watcher type,which is an enumeration type. The content is as follows:


enum FileWatcherType{
ONESHOT = 0, // 仅报送一次事件。请注意事件发生后,监听符号会从监听列表中移除,下次再用需要重新add
PERIODIC,
NEVER
};

The argument attr is the file watcher attribute,which is an enumeration type. The content is as follows:


enum FileWatcherAttribute{
ACCESS = IN_ACCESS,
CREATE = IN_CREATE,
MODIFY = IN_MODIFY,
DELETE = IN_DELETE | IN_DELETE_SELF,
ATTRIB = IN_ATTRIB,
MOVE = IN_MOVE | IN_MOVE_SELF,
OPEN = IN_OPEN,
CLOSE = IN_CLOSE,
ALL = IN_ALL_EVENTS
};

The argument maxdepth is the maximum depth specified for traversal search.

The argument recurType is the recursive type,which is an enumeration type. The content is as follows:


enum RecursiveType{
DIR = 1 << 0,
REGULAR = 1 << 1,
HIDDEN = 1 << 2,
TMPFILE = 1 << 3, //认为那些以~开头的是临时文件
ALLFILE = HIDDEN | TMPFILE | DIR | REGULAR
};

#include <QCoreApplication>
#include <QDebug>
#include "libkyfilewatcher.hpp"
using namespace KYSDK_FILEWATCHER;
int main(int argc, char *argv[])
{
    KYSDK_FILEWATCHER::FileWatcher watcher;
    watcher.addWatchTargetRecursive("/home/kylin/", PERIODIC, ALL, 3, REGULAR);
    getchar();
//    qDebug() << "update attr test";
//    watcher.updateWatchTargetAttribute("/data/testcode/test.c", DELETE);
//    getchar();
//    qDebug() << "re-add test";
//    watcher.addWatchTarget("/data/testcode/test.c", PERIODIC, ALL);
//    getchar();
//    qDebug() << "update oneshot test";
//    watcher.updateWatchTargetType("/data/testcode/test.c", ONESHOT);
//    getchar();
//    qDebug() << "remove target test";
//    watcher.removeWatchTarget("/data/testcode/test.c");
//    getchar();
    watcher.clearWatchList();
    return 0;
}

These functions are as per the withdrawn POSIX.1e draft specification. The following functions are Linux extensions: addWatchTargetListRecursive(), removeWatchTargetRecursive(), clearWatchList(), pauseWatcher() and restartWatcher().

addWatchTargetListRecursive(3), removeWatchTargetRecursive(3), clearWatchList(3), pauseWatcher(3) and restartWatcher(3).

Wed Sep 20 2023 My Project