#:g1: inotifyの紹介

Posted 2014-12-14 15:00:00 GMT

(LISP Library 365参加エントリ)

 LISP Library 365 の349日目です。

inotifyとはなにか

 inotifyは、Olof-Joachim Frahm氏作のLinuxのファイルシステムイベントを監視するinotifyをCommon Lispから利用可能にするライブラリです。

パッケージ情報

パッケージ名inotify
Quicklisp
Quickdocsinotify | Quickdocs
CL Test Grid: ビルド状況inotify | CL Test Grid

インストール方法

(ql:quickload :inotify)

試してみる

 どんな関数があるかは、Quickdocsで確認できます。

 使い方はシンプルで、with-inotify内でイベントを監視します。

(inotify:with-inotify (inot `((#P"/tmp/" ,inotify:in-create)))
  (inotify:read-events inot))

; and ... (with-open-file (out "/tmp/bar" :if-does-not-exist :create))

;=> (#S(INOTIFY:EVENT ; :WATCH #<INOTIFY:WATCH pathname: #P"/tmp/" mask: (IN-CREATE)> ; :MASK (INOTIFY:IN-CREATE) ; :COOKIE 0 ; :NAME "bar"))

上記のように監視中に指定の場所でイベントが発生(上記の場合書き込み)すると通知されます。
タイムアウトも指定可

(inotify:with-inotify (inot `((#P"/tmp/" ,inotify:in-create)))
  (inotify:read-events inot :time-out 1))
;=>  NIL

まとめ

 今回は、inotifyを紹介してみました。
Linuxのファイルシステムがこういうものをサポートしていたとは知りませんでしたが、これは便利ですね。

comments powered by Disqus