2008年12月11日

LinuxでO_EXLOCK使えない

 ChildTreeのファイル操作部分(ロック含め)を見直しています。
 ラクダ本を読んでいたら、sysopen関数に、O_EXLOCK,O_SHLOCKという便利なオプション(それぞれ排他ロック・共有ロック)があるのを発見しまして、「ああ、flock使わないで済むな」などと思いましたがテストスクリプトを書いてみたところ“Your vendor has not defined Fcntl macro O_EXLOCK〜”。

 グーグル先生に聞いてみたところ、LinuxのFcntlではO_EXLOCKはサポートしていないらしい。BSD系はOKらしいけど。
参考:
http://www.lingr.com/room/gauche/archives/2006/11/02
http://practical-scheme.net/wiliki/wiliki.cgi?Lingr%3a%e3%81%be%e3%81%a8%e3%82%81#H-6z2dr0

 結局、sysopenのすぐ後の行でflockしなければならないということですか。極稀だけど、その間に割り込まれる可能性があります。


posted by 鯖缶 at 01:50 | Comment(0) | TrackBack(0) | ただいま開発中 | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前: [必須入力]

メールアドレス:

ホームページアドレス:

コメント: [必須入力]

※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
×

この広告は180日以上新しい記事の投稿がないブログに表示されております。