View | Details | Raw Unified | Return to bug 196844 | Differences between
and this patch

Collapse All | Expand All

(-)kqueue.2 (+52 lines)
Lines 577-582 Link Here
577
If the time limit expires, then
577
If the time limit expires, then
578
.Fn kevent
578
.Fn kevent
579
returns 0.
579
returns 0.
580
.Sh EXAMPLES
581
.Bd -literal -compact
582
#include <sys/types.h>
583
#include <sys/event.h>
584
#include <sys/time.h>
585
#include <err.h>
586
#include <fcntl.h>
587
#include <stdio.h>
588
#include <stdlib.h>
589
#include <string.h>
590
#include <unistd.h>
591
592
int
593
main(int argc, char **argv)
594
{
595
596
	struct kevent event;	/* Event we want to monitor */
597
	struct kevent tevent;	/* Event triggered */
598
	int kq, fd, ret;
599
600
	if (argc != 2) {
601
		err(EXIT_FAILURE, "Usage: %s path\en", argv[0]);
602
	}
603
604
	if ((fd = open(argv[1], O_RDONLY)) == -1) {
605
		err(EXIT_FAILURE, "Failed to open '%s'", argv[1]);
606
	}
607
608
	/* Create kqueue */
609
	if ((kq = kqueue()) == -1) {
610
		err(EXIT_FAILURE, "kqueue() failed");
611
	}
612
613
	/* Initialize kevent structure */
614
	EV_SET(&event, fd, EVFILT_VNODE , EV_ADD | EV_ONESHOT, NOTE_WRITE, 0, NULL);
615
	
616
	for (;;) {
617
		/* Attach event to the kqueue and block until something happens */
618
		ret = kevent(kq, &event, 1, &tevent, 1, NULL);
619
		if (ret == -1) {
620
			perror("kevent");
621
			exit(EXIT_FAILURE);
622
		} else if (ret > 0) {
623
			if (event.flags & EV_ERROR) {
624
				fprintf(stderr, "Event error: %s\en", strerror(event.data));
625
			} else {
626
				printf("Something was written in '%s'\en", argv[1]);
627
			}
628
		}
629
	}
630
}
631
.Ed
580
.Sh ERRORS
632
.Sh ERRORS
581
The
633
The
582
.Fn kqueue
634
.Fn kqueue

Return to bug 196844