2 gcc kqtimer.c -o kqtimer -Wall -W -Wextra -ansi -pedantic */
8 #include <string.h> /* for strerror() */
11 /* function prototypes */
12 void diep(const char *s
);
16 struct kevent change
; /* event we want to monitor */
17 struct kevent event
; /* event that was triggered */
21 /* create a new kernel event queue */
22 if ((kq
= kqueue()) == -1)
25 /* initalise kevent structure */
26 EV_SET(&change
, 1, EVFILT_TIMER
, EV_ADD
| EV_ENABLE
, 0, 5000, 0);
30 nev
= kevent(kq
, &change
, 1, &event
, 1, NULL
);
36 if (event
.flags
& EV_ERROR
) { /* report any error */
37 fprintf(stderr
, "EV_ERROR: %s\n", strerror(event
.data
));
41 if ((pid
= fork()) < 0) /* fork error */
44 else if (pid
== 0) /* child */
45 if (execlp("date", "date", (char *)0) < 0)
54 void diep(const char *s
)