Index: lib/libc/sys/kqueue.2 =================================================================== --- lib/libc/sys/kqueue.2 +++ lib/libc/sys/kqueue.2 @@ -525,6 +525,64 @@ If the time limit expires, then .Fn kevent returns 0. +.Sh EXAMPLES +.Bd -literal -compact +#include +#include +#include +#include +#include +#include +#include +#include + +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) { + printf("Usage: %s dir\n", argv[0]); + exit(EXIT_SUCCESS); + } + + if ((fd = open(argv[1], O_RDONLY)) == -1) { + perror("open"); + exit(EXIT_FAILURE); + } + + /* Create kqueue */ + if ((kq = kqueue()) == -1) { + perror("queue"); + exit(EXIT_FAILURE); + } + + /* Initialize kevent structure */ + EV_SET(&event, fd, EVFILT_VNODE , EV_ADD | EV_ONESHOT, NOTE_WRITE, 0, NULL); + + for (;;) { + /* Attach event to the kqueue and block until something happens */ + ret = kevent(kq, &event, 1, &tevent, 1, NULL); + if (ret == -1) { + perror("kevent"); + exit(EXIT_FAILURE); + } else if (ret > 0) { + if (event.flags & EV_ERROR) { + fprintf(stderr, "Event error: %s\n", strerror(event.data)); + } + printf("Something was written in '%s'\n", argv[1]); + } + } + + /* NOTREACHED */ + close(fd); + exit(EXIT_SUCCESS); + +} +.Ed .Sh ERRORS The .Fn kqueue