access libraries

hi there!

I'll start programming a utility in FreeBSD written in C++, I need to understand what C++ libraries that can alert modification or access to files or scripts on FreeBSD.
Or in other words, what libraries that deal with kernel administration of the access control processes or triggers in FreeBSD for both files and directories?

thanks
https://www.freebsd.org/cgi/man.cgi?kqueue

It has this example:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
     #include <sys/types.h>
     #include <sys/event.h>
     #include <sys/time.h>
     #include <err.h>
     #include <fcntl.h>
     #include <stdio.h>
     #include <stdlib.h>
     #include <string.h>
     #include <unistd.h>

     int
     main(int argc, char **argv)
     {
	 struct	kevent event;	 /* Event we want to monitor */
	 struct	kevent tevent;	 /* Event triggered */
	 int kq, fd, ret;

	 if (argc != 2)
	     err(EXIT_FAILURE, "Usage: %s path\n", argv[0]);
	 fd = open(argv[1], O_RDONLY);
	 if (fd	== -1)
	     err(EXIT_FAILURE, "Failed to open '%s'", argv[1]);

	 /* Create kqueue. */
	 kq = kqueue();
	 if (kq	== -1)
	     err(EXIT_FAILURE, "kqueue() failed");

	 /* Initialize kevent structure. */
	 EV_SET(&event,	fd, EVFILT_VNODE, EV_ADD | EV_CLEAR, NOTE_WRITE,
	     0,	NULL);
	 /* Attach event to the	kqueue.	*/
	 ret = kevent(kq, &event, 1, NULL, 0, NULL);
	 if (ret == -1)
	     err(EXIT_FAILURE, "kevent register");
	 if (event.flags & EV_ERROR)
	     errx(EXIT_FAILURE,	"Event error: %s", strerror(event.data));

	 for (;;) {
	     /*	Sleep until something happens. */
	     ret = kevent(kq, NULL, 0, &tevent,	1, NULL);
	     if	(ret ==	-1) {
		 err(EXIT_FAILURE, "kevent wait");
	     } else if (ret > 0) {
		 printf("Something was written in '%s'\n", argv[1]);
	     }
	 }
     }
Last edited on
Topic archived. No new replies allowed.