Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
torvalds
GitHub Repository: torvalds/linux
Path: blob/master/tools/testing/selftests/filesystems/dnotify_test.c
26298 views
1
// SPDX-License-Identifier: GPL-2.0
2
#define _GNU_SOURCE /* needed to get the defines */
3
#include <fcntl.h> /* in glibc 2.2 this has the needed
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
/* we will now be notified if any of the files
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
}
36
37