main.c 1.1 KB

12345678910111213141516171819202122232425262728293031
  1. #include <sys/time.h>
  2. #include <sys/event.h>
  3. #include <sys/stat.h>
  4. #include <fcntl.h>
  5. #include <stdlib.h>
  6. #include <unistd.h>
  7. int main(int argc, char *argv[]) {
  8. struct kevent event;
  9. struct kevent change;
  10. int fd, kq, nev;
  11. if ((fd = open(argv[1], O_RDONLY)) == -1) return 1;
  12. EV_SET(&change, fd, EVFILT_VNODE , EV_ADD
  13. | EV_CLEAR
  14. | EV_DELETE
  15. | EV_EOF
  16. | EV_DISPATCH
  17. | EV_ONESHOT,
  18. NOTE_DELETE
  19. | NOTE_RENAME
  20. | NOTE_EXTEND
  21. | NOTE_ATTRIB
  22. | NOTE_LINK
  23. | NOTE_REVOKE
  24. | NOTE_WRITE, 0, 0);
  25. if ((kq = kqueue()) == -1) return 1;
  26. nev = kevent(kq, &change, 1, &event, 1, NULL);
  27. if (nev < 0) { return 1; } else if (nev > 0) { if (event.flags & EV_ERROR) { return 1; } }
  28. close(kq);
  29. return 0;
  30. }