36 lines
		
	
	
		
			808 B
		
	
	
	
		
			C
		
	
	
	
	
	
			
		
		
	
	
			36 lines
		
	
	
		
			808 B
		
	
	
	
		
			C
		
	
	
	
	
	
// SPDX-License-Identifier: GPL-2.0
 | 
						|
#define _GNU_SOURCE	/* needed to get the defines */
 | 
						|
#include <fcntl.h>	/* in glibc 2.2 this has the needed
 | 
						|
				   values defined */
 | 
						|
#include <signal.h>
 | 
						|
#include <stdio.h>
 | 
						|
#include <unistd.h>
 | 
						|
 | 
						|
static volatile int event_fd;
 | 
						|
 | 
						|
static void handler(int sig, siginfo_t *si, void *data)
 | 
						|
{
 | 
						|
	event_fd = si->si_fd;
 | 
						|
}
 | 
						|
 | 
						|
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_MODIFY|DN_CREATE|DN_MULTISHOT);
 | 
						|
	/* we will now be notified if any of the files
 | 
						|
	   in "." is modified or new files are created */
 | 
						|
	while (1) {
 | 
						|
		pause();
 | 
						|
		printf("Got event on fd=%d\n", event_fd);
 | 
						|
	}
 | 
						|
}
 |