main.c 1.3 KB

12345678910111213141516171819202122232425262728293031323334
  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_ENABLE
  14. | EV_DISABLE
  15. | EV_CLEAR
  16. | EV_DELETE
  17. | EV_EOF
  18. | EV_RECEIPT
  19. | EV_DISPATCH
  20. | EV_ONESHOT,
  21. NOTE_DELETE
  22. | NOTE_RENAME
  23. | NOTE_EXTEND
  24. | NOTE_ATTRIB
  25. | NOTE_LINK
  26. | NOTE_REVOKE
  27. | NOTE_WRITE, 0, 0);
  28. if ((kq = kqueue()) == -1) return 1;
  29. nev = kevent(kq, &change, 1, &event, 1, NULL);
  30. if (nev < 0) { return 1; } else if (nev > 0) { if (event.flags & EV_ERROR) { return 1; } }
  31. close(kq);
  32. return 0;
  33. }