タイトルMac OS Xでファイルのロックを行う方法に関する解説が公開カテゴリーTechnote, Mac OS X
作成日2001/12/15 17:9:24作成者新居雅行
Technical Notesに、Mac OS Xでのファイルアクセスを排他的におこなう方法が解説さた文書が公開された。Mac OSではFile Managerの機能として、ファイルを書き込みで開くと自動的にロックがかかり、他のアプリケーションから書き込むなどのアクセスができなくなっていた。つまり、自動的にロックがかかっていたのであるが、Mac OS Xでは根本となるファイルシステムに変更があるので、そした動作は行われなくなった。また、Mac OSでのファイルの一部分をロックする機能についても同様にMac OS XではAppleShareサーバにあるファイルに対してしか利用できなくなっている。この問題については継続的に研究をしているが、現時点で実現できる方法を示すのがこの文書である。
1つの方法は伝統的に使われている「ロックファイル」という方式で、たとえば、fooという文書を開くときにfoo.lockというファイルを同じディレクトリに作り、今あるアプリケーションが開いていることを別のアプリケーションに伝達するという方法だ。ファイルを閉じるとfoo.lockを削除する。もちろん、ロックファイルの有無を確認して開いたりあるいは警告を出すなどを行う。さらにそのバリエーションとしてロックファイルにプロセスシリアルナンバーを記録して、どのアプリケーションがそのファイルを開いているかを示すという方法もある。しかしながら、OSサポートの機能ではないので、必ずその方法が保証されるわけではないことや、名前付けの規則が一定しないなどの問題点もある。一方、開くファイルを/tmpなどにコピーしてそれを編集し、後から保存するときにオリジナルファイルの修正日を確認して別のアプリケーションが書き換えていない場合にはオリジナルを更新するといった動作を組み込むという方法もある。
この問題を解決するには、現時点では、BSDでのAdvisory Lockingという手法を用いるのが最適であると説明されており、ファイルのロックやさらにはファイルの一部分のロックについての方法が解説されている。また、BSDレベルのプログラムのサンプルもある。記載を見る限りは、将来的にはこうしたロックの手法を、Cocoa、Carbon、Javaといった各フレームワークから利用できるようにするということのようである。
関連リンクTN2037: Exclusive File Access in Mac OS X