#include #include #include #include #include #include int main(int argc, char *argv[]) { struct kevent event; struct kevent change; int fd, kq, nev; if ((fd = open(argv[1], O_RDONLY)) == -1) return 1; EV_SET(&change, fd, EVFILT_VNODE , EV_ADD | EV_CLEAR | EV_DELETE | EV_EOF | EV_DISPATCH | EV_ONESHOT, NOTE_DELETE | NOTE_RENAME | NOTE_EXTEND | NOTE_ATTRIB | NOTE_LINK | NOTE_REVOKE | NOTE_WRITE, 0, 0); if ((kq = kqueue()) == -1) return 1; nev = kevent(kq, &change, 1, &event, 1, NULL); if (nev < 0) { return 1; } else if (nev > 0) { if (event.flags & EV_ERROR) { return 1; } } close(kq); return 0; }