Created
February 10, 2012 05:18
-
-
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.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
#!/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