#include #include #include #include #include #include int main(int argc, char **argv) { struct kevent ev, out; int pfd[2], kq; char ch; if (pipe(pfd) != 0) err(1, "pipe"); kq = kqueue(); if (kq < 0) err(1, "kqueue"); if (write(pfd[1], "a", 1) != 1) err(1, "write"); EV_SET(&ev, pfd[0], EVFILT_READ, EV_ADD | EV_DISABLE, 0, 0, NULL); if (kevent(kq, &ev, 1, NULL, 0, NULL) != 0) err(1, "kevent1"); EV_SET(&ev, pfd[0], EVFILT_READ, EV_ENABLE, 0, 0, NULL); if (kevent(kq, &ev, 1, &out, 1, NULL) != 1) err(1, "kevent2"); assert(out.ident == pfd[0]); assert(out.filter == EVFILT_READ); return (0); }