C语言之inotify(二十七)
C语言 二十七 inotify
2023-09-14 09:09:58 时间
#include <limits.h>
#include <stdio.h>
#include <unistd.h>
#include <string.h>
#include <sys/inotify.h>
#define BUF_LEN (10 * (sizeof(struct inotify_event) + NAME_MAX + 1))
static void displayInotifyEvent(struct inotify_event *i){
printf(" wd =%2d; ", i->wd);
if(i->cookie > 0)
printf("cookie =%4d; ", i->cookie);
printf("mask = %0x \n", i->mask);
if (i->mask & IN_ACCESS) printf("IN_ACCESS ");
if (i->mask & IN_ATTRIB) printf("IN_ATTRIB ");
if (i->mask & IN_CLOSE_NOWRITE) printf("IN_CLOSE_NOWRITE ");
if (i->mask & IN_CLOSE_WRITE) printf("IN_CLOSE_WRITE ");
if (i->mask & IN_CREATE) printf("IN_CREATE ");
if (i->mask & IN_DELETE) printf("IN_DELETE ");
if (i->mask & IN_DELETE_SELF) printf("IN_DELETE_SELF ");
if (i->mask & IN_IGNORED) printf("IN_IGNORED ");
if (i->mask & IN_ISDIR) printf("IN_ISDIR ");
if (i->mask & IN_MODIFY) printf("IN_MODIFY ");
if (i->mask & IN_MOVE_SELF) printf("IN_MOVE_SELF ");
if (i->mask & IN_MOVED_FROM) printf("IN_MOVED_FROM ");
if (i->mask & IN_MOVED_TO) printf("IN_MOVED_TO ");
if (i->mask & IN_OPEN) printf("IN_OPEN ");
if (i->mask & IN_Q_OVERFLOW) printf("IN_Q_OVERFLOW ");
if (i->mask & IN_UNMOUNT) printf("IN_UNMOUNT ");
printf("\n");
if (i->len > 0)
printf(" name = %s\n", i->name);
}
int main(int argc, char *argv[]){
int inotifyFd, wd, j;
char buf[BUF_LEN] __attribute__ ((aligned(8)));
unsigned int numRead;
char *p;
struct inotify_event *event;
if (argc < 2 || strcmp(argv[1], "--help") == 0)
printf("%s pathname...\n", argv[0]);
inotifyFd = inotify_init();
if (inotifyFd == -1)
perror("inotify_init");
for (j = 1; j < argc; j++) {
wd = inotify_add_watch(inotifyFd, argv[j], IN_ALL_EVENTS);
if(wd == -1)
perror("inotify_add_watch");
printf("Watching %s using wd %d\n", argv[j], wd);
}
for(;;) {
numRead = read(inotifyFd, buf, BUF_LEN);
printf("Read %ld bytes from inotify fd\n", (long) numRead);
for (p = buf; p < buf + numRead; ) {
event = (struct inotify_event *) p;
displayInotifyEvent(event);
p += sizeof(struct inotify_event) + event->len;
}
}
return 0;
}
相关文章
- C语言链表排序_C语言版数据结构链表
- plc的移位指令C语言实现,移位指令做流水灯-PLC中使用移位指令是如何实现移位动作的-电气资讯 – 电工屋…「建议收藏」
- 初识C语言(下):基本了解C语言的基础知识,对C语言有一个大概的认识。
- C语言复习_进制
- 体系学习C语言,首先要学习Linux体系(学c要学linux)
- 「C语言」跨平台编程利器:Linux 绝不妥协(c跨平台linux)
- 语言Linux环境下使用ODBC操作C语言编写数据库(linux odbc c)
- Linux C语言面试:挑战你的编程技能!(linuxc语言面试题)
- C语言如何优雅安全地保存MySQL数据库(c 保存mysql数据库)
- 数据 C语言使用MySQL添加数据实现有效数据管理(c 使用mysql添加)
- C语言驱动MySQL增删查改简明实现(c mysql增删查改)
- 快速手把手教你使用C语言操作MySQL修改数据(c mysql 修改)
- 精准掌握C语言与Oracle拼接规范(c oracle拼接规范)