Index: kqueue.2 =================================================================== --- kqueue.2 +++ kqueue.2 @@ -577,6 +577,58 @@ If the time limit expires, then .Fn kevent returns 0. +.Sh EXAMPLES +.Bd -literal -compact +#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\en", argv[0]); + } + + if ((fd = open(argv[1], O_RDONLY)) == -1) { + err(EXIT_FAILURE, "Failed to open '%s'", argv[1]); + } + + /* Create kqueue */ + if ((kq = kqueue()) == -1) { + err(EXIT_FAILURE, "kqueue() failed"); + } + + /* 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\en", strerror(event.data)); + } else { + printf("Something was written in '%s'\en", argv[1]); + } + } + } +} +.Ed .Sh ERRORS The .Fn kqueue