디렉토리 (/ test)를 모니터링하고 알려주는 프로그램이 있습니다. 다른 디렉토리 (/ opt)를 모니터하기 위해이 기능을 향상시키고 싶습니다. 또한 하위 디렉토리를 모니터링하는 방법도 있지만 현재/test 아래의 파일에 변경 사항이있을 경우 알림을 받게됩니다. 변경/시험의 하위 디렉토리를 만든 경우하지만 난 어떤 inotifcation을받지 못했습니다, 그 ..inotify를 사용하여 하위 디렉토리와 함께 여러 디렉토리를 모니터링하는 C 프로그램?
여기내 현재 코드 터치 /test/sub-dir/files.txt - 이것은 도움이되기를 바랍니다
/*
Simple example for inotify in Linux.
inotify has 3 main functions.
inotify_init1 to initialize
inotify_add_watch to add monitor
then inotify_??_watch to rm monitor.you the what to replace with ??.
yes third one is inotify_rm_watch()
*/
#include <sys/inotify.h>
int main(){
int fd,wd,wd1,i=0,len=0;
char pathname[100],buf[1024];
struct inotify_event *event;
fd=inotify_init1(IN_NONBLOCK);
/* watch /test directory for any activity and report it back to me */
wd=inotify_add_watch(fd,"/test",IN_ALL_EVENTS);
while(1){
//read 1024 bytes of events from fd into buf
i=0;
len=read(fd,buf,1024);
while(i<len){
event=(struct inotify_event *) &buf[i];
/* check for changes */
if(event->mask & IN_OPEN)
printf("%s :was opened\n",event->name);
if(event->mask & IN_MODIFY)
printf("%s : modified\n",event->name);
if(event->mask & IN_ATTRIB)
printf("%s :meta data changed\n",event->name);
if(event->mask & IN_ACCESS)
printf("%s :was read\n",event->name);
if(event->mask & IN_CLOSE_WRITE)
printf("%s :file opened for writing was closed\n",event->name);
if(event->mask & IN_CLOSE_NOWRITE)
printf("%s :file opened not for writing was closed\n",event->name);
if(event->mask & IN_DELETE_SELF)
printf("%s :deleted\n",event->name);
if(event->mask & IN_DELETE)
printf("%s :deleted\n",event->name);
/* update index to start of next event */
i+=sizeof(struct inotify_event)+event->len;
}
}
}