生成一个inotify检测的c++代码
时间: 2023-04-05 21:01:27 浏览: 186
好的,我可以回答这个问题。以下是一个简单的 inotify 检测的 C 代码示例:
```c
#include <stdio.h>
#include <stdlib.h>
#include <errno.h>
#include <sys/inotify.h>
#define EVENT_SIZE (sizeof(struct inotify_event))
#define BUF_LEN (1024 * (EVENT_SIZE + 16))
int main(int argc, char **argv) {
int fd, wd, len, i;
char buf[BUF_LEN];
fd = inotify_init();
if (fd < 0) {
perror("inotify_init");
exit(EXIT_FAILURE);
}
wd = inotify_add_watch(fd, ".", IN_CREATE | IN_DELETE);
if (wd < 0) {
perror("inotify_add_watch");
exit(EXIT_FAILURE);
}
while (1) {
len = read(fd, buf, BUF_LEN);
if (len < 0) {
perror("read");
exit(EXIT_FAILURE);
}
i = 0;
while (i < len) {
struct inotify_event *event = (struct inotify_event *)&buf[i];
if (event->len) {
if (event->mask & IN_CREATE) {
printf("File %s created.\n", event->name);
} else if (event->mask & IN_DELETE) {
printf("File %s deleted.\n", event->name);
}
}
i += EVENT_SIZE + event->len;
}
}
inotify_rm_watch(fd, wd);
close(fd);
return 0;
}
```
这个程序使用 inotify API 监听当前目录下的文件创建和删除事件,并打印出相应的信息。
阅读全文