监视操作系统文件

简介: FindFirstChangeNotification函数创建一个更改通知句柄并设置初始更改通知过滤条件. 当一个在指定目录或子目录下发生的更改符合过滤条件时,等待通知句柄则成功。
FindFirstChangeNotification函数创建一个更改通知句柄并设置初始更改通知过滤条件. 当一个在指定目录或子目录下发生的更改符合过滤条件时,等待通知句柄则成功。 
该函数原型为:
HANDLE FindFirstChangeNotification(
LPCTSTR lpPathName, //目录名
BOOL bWatchSubtree, // 监视选项
DWORD dwNotifyFilter // 过滤条件
);


当下列情况之一发生时,WaitForMultipleObjects函数返回
1.一个或者全部指定的对象在信号状态(signaled state)
2.到达超时间隔


例程如下:
DWORD dwWaitStatus;
HANDLE dwChangeHandles[2];
//监视C:/Windows目录下的文件创建和删除
dwChangeHandles[0] = FindFirstChangeNotification(
"C://WINDOWS", // directory to watch
FALSE, // do not watch the subtree
FILE_NOTIFY_CHANGE_FILE_NAME);// watch file name changes


if (dwChangeHandles[0] == INVALID_HANDLE_VALUE)
ExitProcess(GetLastError());


//监视C:/下子目录树的文件创建和删除
dwChangeHandles[1] = FindFirstChangeNotification(
"C://", // directory to watch
TRUE, // watch the subtree
FILE_NOTIFY_CHANGE_DIR_NAME);// watch dir. name changes


if (dwChangeHandles[1] == INVALID_HANDLE_VALUE)
ExitProcess(GetLastError());


// Change notification is set. Now wait on both notification 
// handles and refresh accordingly
while (TRUE)
{
// Wait for notification
dwWaitStatus = WaitForMultipleObjects(2, dwChangeHandles,FALSE, INFINITE);
switch (dwWaitStatus)
{
case WAIT_OBJECT_0:
//在C:/WINDOWS目录中创建或删除文件
//刷新该目录及重启更改通知(change notification)
AfxMessageBox("RefreshDirectory");
if ( FindNextChangeNotification(dwChangeHandles[0])== FALSE)
ExitProcess(GetLastError());
break;


case WAIT_OBJECT_0 1:
//在C:/WINDOWS目录中创建或删除文件 。 
//刷新该目录树及重启更改通知(change notification)
AfxMessageBox("RefreshTree");
if (FindNextChangeNotification(dwChangeHandles[1])== FALSE)
ExitProcess(GetLastError());
break;


default:
ExitProcess(GetLastError());
}
}
目录
相关文章
|
8月前
|
Python
python如何使用os模块进行文件和目录操作?
python如何使用os模块进行文件和目录操作?
136 1
|
存储 Linux Python
Python分享之路径与文件 (os.path包, glob包)
Python分享之路径与文件 (os.path包, glob包)
|
Unix Go
Golang 语言的标准库 os 包怎么操作目录和文件?
Golang 语言的标准库 os 包怎么操作目录和文件?
47 0
|
Linux Shell Go
《Linux操作系统编程》 第五章 文件和文件系统: 了解文件和文件系统的概念和特性,掌握Linux文件系统的基本操作
《Linux操作系统编程》 第五章 文件和文件系统: 了解文件和文件系统的概念和特性,掌握Linux文件系统的基本操作
133 0
|
2月前
|
Python
文件元数据获取方法对比:`os.path` 与 `os.stat`
本文对比了Python中两种获取文件元数据的方法:`os.path`和`os.stat`。通过示例代码展示了如何获取文件大小和修改时间,并从性能、功能性和代码可读性三方面进行了详细对比。最终给出了根据具体需求选择合适方法的最佳实践建议。
28 2
|
3月前
|
存储 Java iOS开发
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
MacOS环境-手写操作系统-43-dir命令的实现 和 文件写入
44 0
|
7月前
|
缓存 Linux Windows
初识Linux操作系统(根目录下的重要文件)(命令提示符的含义)
Linux系统基于"一切皆文件"的理念,重要文件分布在如/root(root用户目录)、/home(普通用户目录)、/etc(应用配置)、/dev(设备文件)、/boot(内核及启动文件)、/proc(动态系统信息)、/lib64(库文件)、/opt(软件存放)、/tmp(临时文件)。"[root@localhost ~]#"代表管理员在root目录,"$"代表普通用户。创建新用户用`useradd`命令。调节终端字体大小:Ctrl+Shift++增大,Ctrl+减号缩小。绝对路径从根目录开始,相对路径从当前目录开始。
|
7月前
|
Unix 关系型数据库 API
Python OS 文件/目录方法
Python OS 文件/目录方法
|
7月前
|
Java 开发工具 Android开发
详细解读Android开发DNK开发将.c文件打包成os
详细解读Android开发DNK开发将.c文件打包成os
36 0
|
7月前
|
消息中间件 Java Kafka
实时计算 Flink版操作报错合集之RocksDB在尝试打开更多文件时达到了操作系统允许的最大打开文件数限制,该怎么办
在使用实时计算Flink版过程中,可能会遇到各种错误,了解这些错误的原因及解决方法对于高效排错至关重要。针对具体问题,查看Flink的日志是关键,它们通常会提供更详细的错误信息和堆栈跟踪,有助于定位问题。此外,Flink社区文档和官方论坛也是寻求帮助的好去处。以下是一些常见的操作报错及其可能的原因与解决策略。
135 0