UKKQueueを利用してkqueue(2)をつかう

1

Click here to load reader

description

2004-10-30, Cocoa勉強会Cocoaアプリケーションでkqueue(2)を使うためのライブラリの紹介。

Transcript of UKKQueueを利用してkqueue(2)をつかう

Page 1: UKKQueueを利用してkqueue(2)をつかう

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の弱点�����*04%'!(#86$&

サンプルでエディタをTextEditにすると、思うように動作しない。理由は不明。

参考情報��������������

http://developer.apple.com/samplecode/FileNotification/FileNotification.htmlAppleによるkqueue/keventを利用してフォルダを監視するサンプル。論文もついてる。

�~������)7"!~����� ����� ������:9,12/+�-35.�poll(2)/select(2)との比較や、サンプルプログラムでの解説など。