Skip to content

Instantly share code, notes, and snippets.

@laclefyoshi
Created May 7, 2011 06:04
Show Gist options
  • Save laclefyoshi/960250 to your computer and use it in GitHub Desktop.
Save laclefyoshi/960250 to your computer and use it in GitHub Desktop.
using select.kqueue for monitoring a file
#!/usr/bin/python
# -*- coding: utf-8 -*-
# Copyright : (c) SAEKI Yoshiyasu
# License : MIT-style license
# <http://www.opensource.org/licenses/mit-license.php>
# last updated: 2011/05/07
import select
# import os
f = open("foo")
# when monitoring a directory: f = os.open("foo", os.O_RDONLY)
kq = select.kqueue()
ke = select.kevent(f, filter=select.KQ_FILTER_VNODE,
flags=select.KQ_EV_ADD | select.KQ_EV_ENABLE | select.KQ_EV_CLEAR,
fflags=select.KQ_NOTE_DELETE | select.KQ_NOTE_WRITE)
events = kq.control([ke], 0, None)
while True:
r_events = kq.control([ke], 1, None)
for event in r_events:
print event
if event.fflags & select.KQ_NOTE_DELETE:
print "file was deleted!"
elif event.fflags & select.KQ_NOTE_WRITE:
print "file was updated!"
f.close()
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment