#include <sys/epoll.h>
#include <fcntl.h>
#include <stdio.h>
#include <errno.h>
#include <stdlib.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 i, epfd, nfds, fd;
int wd;
int length;
char buffer[BUF_LEN];
struct epoll_event ev, events[20];
epfd = epoll_create (256);
fd = inotify_init ();
wd = inotify_add_watch (fd, "/home/cc/tmp",
IN_MODIFY | IN_CREATE | IN_DELETE);
ev.data.fd = fd;
ev.events = EPOLLIN | EPOLLET;
epoll_ctl (epfd, EPOLL_CTL_ADD, fd, &ev);
for (;;)
{
nfds = epoll_wait (epfd, events, 20, 500);
for (i = 0; i < nfds; ++i)
{
if (events[i].data.fd == fd)
{
length = read (fd, buffer, BUF_LEN);
if (length < 0)
{
perror ("read");
}
while (i < length)
{
struct inotify_event *event =
(struct inotify_event *) &buffer[i];
if (event->len)
{
if (event->mask & IN_CREATE)
{
if (event->mask & IN_ISDIR)
{
printf ("The directory %s was created.\n",
event->name);
}
else
{printf ("The file %s was created.\n",
event->name);
}
}
else if (event->mask & IN_DELETE)
{
if (event->mask & IN_ISDIR)
{
printf ("The directory %s was deleted.\n",
event->name);
}
else
{
printf ("The file %s was deleted.\n",
event->name);
}
}
else if (event->mask & IN_MODIFY)
{
if (event->mask & IN_ISDIR)
{
printf ("The directory %s was modified.\n",
event->name);
}
else
{
printf ("The file %s was modified.\n",
event->name);
}
}
}
i += EVENT_SIZE + event->len;
}
}
}
}
return 0;
}
分享到:
相关推荐
该源代码使用linux的网络IO多路复用模型epoll在建立tcpserver,对用队列来缓存请求,使用线程池来处理请求。
Linux网络编程(四)——epoll+多线程实现简单的聊天(linux 服务器端 windows客户端)
C语言+epoll+线程池实现的聊天室.zip
epoll+多线程的例子,本例子还有压力测试。
2.客户端向服务器发送的数据内容是:自己的进程ID,以及文件data.txt中的内容,自己创建这个文件,内容随意; 3.服务器要把从每个客户端收到的数据记录到一个文件中,文件名字:recv.txt,每行包括一个进程ID和从...
一个非常好的epoll+线程池服务器Demo
内容摘要:使用“epoll+线程池”技术,通过makefile管理的简单项目——“服务器与客户端完成通信并处理小型业务” 技术涉及:网络初始化、epoll模型、线程池、线程同步、互斥锁 适用人群:在校大学生,并对网络通信...
有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。 # 注意 1. 本资源仅用于开源学习和技术交流。不可商用等,一切后果由使用者承担。 2. 部分字体以及...
这是一个简单的web服务器利用Linux下的线程池技术和Epoll机制 简单粗略有不足的欢迎指导
epoll多路IO转接机制:常用STL(vector, map)、文件读写(fstream)、jsoncpp解析json数据、MySQL基本操作; 实现的功能:注册、单点登录、登出、群聊(支持文本和图片的传送)、上线下线公告、在线用户记录;
Linux + C + Epoll实现高并发服务器,运用线程池技术。
一个epoll+reactor的http文件下载服务器一个线程池的模型
inotify,epoll
【项目资源】: 包含前端、后端、移动开发、操作系统、人工智能、物联网、信息化管理、数据库、硬件开发...有任何使用上的问题,欢迎随时与博主沟通,博主会及时解答。 鼓励下载和使用,并欢迎大家互相学习,共同进步。
最近做工程用到了这些知识,因此总结一些这方面的资料,我认为还是比较有用的,通过这些资料,大概一天就可以学会噢~
linux下服务器的搭建,socket+epoll模型+线程池+心跳检测+工厂模式;内含客户端的测试
linux epoll服务器+windows 客户端 socket tcp通信的例子.zip
通过网络提供单个文件的速度非常快。 建造: gcc -Ofast -Wall share.c -o share在本地运行: # Serve on localhost:8080 with mime type text/plainshare test.txt测试: curl ...