/*
notify if anything is modified in the current directory
*/
#define _GNU_SOURCE
#include
#include
#include
#include
static volatile int event_fd;
static volatile int event_sig;
static volatile void *event_data;
static void handler(int sig, siginfo_t *si, void *data)
{
event_fd = si->si_fd;
event_sig = sig;
event_data = data;
}
int main(void)
{
struct sigaction act;
int fd;
act.sa_sigaction = handler;
sigemptyset(&act.sa_mask);
act.sa_flags = SA_SIGINFO;
sigaction(SIGRTMIN + 1, &act, NULL);
fd = open(".", O_RDONLY);
fcntl(fd, F_SETSIG, SIGRTMIN + 1);
fcntl(fd, F_NOTIFY, DN_ACCESS|DN_MODIFY|DN_CREATE|DN_RENAME|DN_DELETE|DN_ATTRIB|DN_MULTISHOT);
while (1) {
pause();
printf("Sth happened on fd=%d\n", event_fd);
}
}
Rekomendasi Game Android Bahasa Indonesia
3 years ago
0 comments:
Post a Comment