| 1 | |
| 2 | #define _GNU_SOURCE
|
| 3 | #include <fcntl.h> |
| 4 | values defined
|
| 5 | #include <signal.h>
|
| 6 | #include <stdio.h>
|
| 7 | #include <unistd.h>
|
| 8 |
|
| 9 | static volatile int event_fd;
|
| 10 |
|
| 11 | static void handler(int sig, siginfo_t *si, void *data)
|
| 12 | {
|
| 13 | event_fd = si->si_fd;
|
| 14 | }
|
| 15 |
|
| 16 | int main(void)
|
| 17 | {
|
| 18 | struct sigaction act;
|
| 19 | int fd;
|
| 20 |
|
| 21 | act.sa_sigaction = handler;
|
| 22 | sigemptyset(&act.sa_mask);
|
| 23 | act.sa_flags = SA_SIGINFO;
|
| 24 | sigaction(SIGRTMIN + 1, &act, NULL);
|
| 25 |
|
| 26 | fd = open(".", O_RDONLY);
|
| 27 | fcntl(fd, F_SETSIG, SIGRTMIN + 1);
|
| 28 | fcntl(fd, F_NOTIFY, DN_MODIFY|DN_CREATE|DN_MULTISHOT);
|
| 29 | |
| 30 | in "." is modified or new files are created
|
| 31 | while (1) {
|
| 32 | pause();
|
| 33 | printf("Got event on fd=%d\n", event_fd);
|
| 34 | }
|
| 35 | }
|