使用信號處理linux文件系統監視,(if no inotify) 收藏
Posted on 2010-03-04 22:46 S.l.e!ep.¢% 閱讀(241) 評論(0) 編輯 收藏 引用 所屬分類: Unix使用信號處理linux文件系統監視,(if no inotify) 收藏
linux下c的代碼原型如下:
#define _GNU_SOURCE
#include <fcntl.h>
#include <signal.h>
#include <stdio.h>
#include <unistd.h>
static volatile int event_fd;
static void handler(int signum, siginfo_t *si, void *data){
??? event_fd = si->si_fd;
??? printf("info size:%d, data:%d\n", sizeof(siginfo_t), sizeof(data));
}
int main(int argc, char **argv){
??? struct sigaction action;
??? int fd;
??? action.sa_sigaction = handler;
??? sigemptyset(&action.sa_mask);
??? action.sa_flags = SA_SIGINFO;
??? sigaction(SIGRTMIN+1, &action, NULL);
???
??? fd = open("test", O_RDONLY);
??? fcntl(fd, F_SETSIG, SIGRTMIN+1);
??? fcntl(fd, F_NOTIFY, DN_MODIFY | DN_CREATE | DN_MULTISHOT);
??? fd = open(".", O_RDONLY);
??? fcntl(fd, F_SETSIG, SIGRTMIN+1);
??? fcntl(fd, F_NOTIFY, DN_MODIFY | DN_CREATE | DN_MULTISHOT);
??? while(1){
??????? pause();
??????? printf("got event on fd=%d\n", event_fd);
??? }
}
本文來自CSDN博客,轉載請標明出處:http://blog.csdn.net/xiangya/archive/2007/01/21/1489526.aspx