More Related Content
More from Wataru Kimura (11)
UKKQueueを利用してkqueue(2)をつかう
- 1. UKKQueueを利用してkqueue(2)をつかう
Cocoa勉強会 2004.10.30(土) 木村 渡
kqueue/keventはPantherから導入された(FreeBSDでは4.1-RELEASEから)仕組みで、ファイル記述子
(ファイル、ソケット、デバイスとか)の入出力などを監視することができる。
UKKQueueは、Uli Kusterer氏が作成したkqueue/keventのCocoaラッパーで、ファイルの監視に特化したも
の。UKKQueueは次のURLで公開されている。
http://www.zathras.de/angelweb/sourcecode.htm#UKKQueue
UKKQueueの使いかた
UKKQueueのインスタンスを作成し、以下のメソッド利用して監視対象の登録/解除を行う。
-[UKKQueue addPathToQueue:]
-[UKKQueue addPathToQueue:notifyingAbout:]
監視対象ファイルパスを指定。後者のメソッドでは、監視したいイベントを指定できる(ファイルへの
書き込み、ファイルの削除など)。
-[UKKQueue removePathFromQueue:]
監視をやめる。
監視対象としたファイルに書き込みなどが行われたとき、-[NSWorkspace notificationCenter]を通して通知がされ
る。なので、イベントを知りたいオブジェクトは-[NSWorkspace notificationCenter]にオブザーバとして登録してお
く。
サンプルについて
ウィンドウに表示したNSTextViewの内容を一時ファイルに保存し、他のアプリケーションで開く。外部アプリ
ケーションでファイルを保存すると、その内容をNSTextViewに読み込む。
kqueueの弱点
サンプルでエディタをTextEditにすると、思うように動作しない。理由は不明。
参考情報
http://developer.apple.com/samplecode/FileNotification/FileNotification.html
Appleによるkqueue/keventを利用してフォルダを監視するサンプル。論文もついてる。
∼ ∼
poll(2)/select(2)との比較や、サンプルプログラムでの解説など。