Skip to content

Instantly share code, notes, and snippets.

@langseth
Created February 10, 2012 05:18
Show Gist options
  • Save langseth/1786887 to your computer and use it in GitHub Desktop.
Save langseth/1786887 to your computer and use it in GitHub Desktop.
simple example of kevent in python. Simply notes when a monitored file is deleted or renamed.
#!/usr/local/bin/python
import select
from select import kqueue, kevent
import os
import sys
filename = "access.log"
fd = os.open(filename,os.O_RDONLY)
kq = kqueue()
event = [
kevent(fd,
filter=select.KQ_FILTER_READ,
flags=select.KQ_EV_ADD),
kevent(fd,
filter=select.KQ_FILTER_VNODE,
flags=select.KQ_EV_ADD | select.KQ_EV_CLEAR,
fflags=select.KQ_NOTE_DELETE | select.KQ_NOTE_RENAME)
]
events = kq.control(event,0,0)
while True:
print "loop"
r_events = kq.control(None,4)
for event in r_events:
print event
for event in r_events:
if event.fflags & select.KQ_NOTE_DELETE:
print "file was deleted"
elif event.fflags & select.KQ_NOTE_RENAME:
print "file was renamed"
kq.close()
os.close(fd)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment