• ベストアンサー

unixでのファイルロックの方法教えてください

 unixでファイルロックを試みているのですが、うまくいきません。open関数で得たファイル指定子にlockfを用いてみたのですがうまくいきません。ロックはされているようなのですが、他からファイルに書き込みができてしまうのです。  flockやO_EXLOCKなどは、使えないのです。誰か、「こうすればいい!」といえる方、教えてください。

質問者が選んだベストアンサー

  • ベストアンサー
  • leaz024
  • ベストアンサー率75% (398/526)
回答No.3

下記ページが非常に参考になると思います。 ご一読ください。

参考URL:
http://tohoho.wakusei.ne.jp/wwwcgi8.htm, http://www.din.or.jp/~ohzaki/perl.htm#File_Lock

その他の回答 (2)

回答No.2

僕も同じ事で悩んだことがあるのですが、他の書き込もうとするプロセスはlockfを使っていますか? どうやらlockf等の関数は書きこみ自体を禁止にするのではなく排他制御のためのお約束みたいなもので、無視してしまえば当然のごとく?書込みできてしまうのではないかと思っています。・・・はっきりいって自信ありません。 便乗になってしまいますが、詳しい方いらしたら正確な事を教えて頂けないでしょうか?

  • toysmith
  • ベストアンサー率37% (570/1525)
回答No.1

unixにおけるファイルロックはいくつかの種類があり、互換性はありません。 lockf(3):Posix.1準拠 flock(2):BSD準拠 fcntl(2):F_GETLKフラグはSVr4, SVID, POSIX, X/OPEN, BSD 4.3. Posix.1(ただし、仕様の記述があるだけで機能するという保証は無い) 御利用のUNIXはどの仕様に準拠しているのか教えて下さい。

GANDI
質問者

補足

私が使っているunixの仕様はよく分からないのですが HP-UX(ヒューレット・パッカード社の開発) で、BSDよりはSVr5に近い?という話です。 これで何かわかりましたら、お手数ですが もう一度お願いします。

関連するQ&A

専門家に質問してみよう