如何解决如何成功使 IN_DELETE 事件起作用?
在这段代码中,我试图使 IN_DELETE 事件起作用。虽然 IN_CREATE 和 IN_DELETE 事件与 IN_DELETE 相同,但是当我删除文件或目录时,终端什么也不显示。这段代码有什么问题吗?请帮助改进此代码
#include <stdio.h>
#include <stdlib.h>
#include <unistd.h>
#include <sys/inotify.h>
#include <errno.h>
#include <limits.h>
typedef struct{
int fd,watchFd;
char buffer[100];
} monitoring;
int main(int argc,char *argv[])
{
monitoring monitor;
monitor.fd = inotify_init();
monitor.buffer[sizeof(struct inotify_event) + NAME_MAX + 1];
struct inotify_event *evp;
if(monitor.fd<0){
perror("inotify_init not initialized: ");
return -1;
}
monitor.watchFd = inotify_add_watch(monitor.fd,"/Projects/Project1",IN_CREATE|IN_MODIFY|IN_DELETE);
while(1){
read(monitor.fd,monitor.buffer,sizeof(monitor.buffer));
evp = (struct inotify_event*)monitor.buffer;
if(evp->len > 0){
if(evp->mask & IN_CREATE){
if(evp->mask & IN_ISDIR){
printf("Directory created: * %s\n",evp->name);
}
else{
printf("File created: * %s\n",evp->name);
}
}
if(evp->mask & IN_MODIFY){
if(evp->mask & IN_ISDIR){
printf("Directory modified: ");
}
else{
printf("File modified: ");
}
}
if(evp->mask & IN_DELETE){
if(evp->mask & IN_ISDIR){
printf("Directory deleted: * %s\n",evp->name);
}
else{
printf("File deleted: * %s\n",evp->name);
}
}
}
}
inotify_rm_watch(monitor.fd,monitor.watchFd);
close(monitor.fd);
return (EXIT_SUCCESS);
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。