kqueueでファイルの状態を監視する
ファイルの状態を監視するために、Linuxならinotifyが簡単に使えるのだけれど、最近メインで使っているBSD系だとkqueueを使うしかなさそうなので、頑張って使ってみた。
C: sys/event.h
指定したファイルの変更と削除について監視する。
$ echo "foo" >> foo $ echo "bar" >> foo $ rm foo
$ ./test_kqueue file was updated! file was updated! file was deleted!
Python: select
Pythonだとselectモジュールを使って、Cと同じように書ける。
$ echo "foo" >> foo $ echo "bar" >> foo $ rm foo
$ python test_kqueue.py <select.kevent ident=3 filter=-4 flags=0x15 fflags=0x2 data=0x0 udata=0x0> file was updated! <select.kevent ident=3 filter=-4 flags=0x15 fflags=0x2 data=0x0 udata=0x0> file was updated! <select.kevent ident=3 filter=-4 flags=0x15 fflags=0x11 data=0x0 udata=0x0> file was deleted!