Page MenuHomeFreeBSD

D6082.diff
No OneTemporary

D6082.diff

Index: head/lib/libc/sys/kqueue.2
===================================================================
--- head/lib/libc/sys/kqueue.2
+++ head/lib/libc/sys/kqueue.2
@@ -24,7 +24,7 @@
.\"
.\" $FreeBSD$
.\"
-.Dd August 4, 2015
+.Dd May 1, 2016
.Dt KQUEUE 2
.Os
.Sh NAME
@@ -603,6 +603,57 @@
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]);
+ 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'\en", argv[1]);
+ }
+ }
+}
+.Ed
.Sh ERRORS
The
.Fn kqueue

File Metadata

Mime Type
text/plain
Expires
Thu, Mar 5, 4:21 PM (1 h, 29 m)
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
29291394
Default Alt Text
D6082.diff (1 KB)

Event Timeline