テキストファイルの排他制御について


くろ  2012-07-25 03:35:48  No: 73482

サーバにテキストファイルがあり、
他のパソコン(複数台)から、サーバのテキストファイルを書き換えています。

テキストファイルの内容を書き換える際に、
CreateFile を使用し、テキストファイルの排他制御をおこなっているのですが、
サーバのテキストファイルをOpenしているときに、
LANケーブルが抜かれるなどして、CloseHandler が出来なくなってしまうと、
サーバのテキストが排他制御のままになってしまいます。

この場合、排他制御を解除する方法はあるのでしょうか?

VC++ 6.0
MFC

サーバ: Windows XP または Linux


くろ  2012-07-25 03:56:18  No: 73483

追記

サーバが WindowsXPだと
CreateFileを行ったパソコンのLANケーブルを抜き
5分程まってから、サーバのテキストファイルを開くと
排他制御が解除されています。

これは、OSが勝手に解除しているのでしょうか?
また XP 以降だと、解除されるものと思っていいのでしょうか?


くろ  2012-07-25 03:56:19  No: 73484

追記

サーバが WindowsXPだと
CreateFileを行ったパソコンのLANケーブルを抜き
5分程まってから、サーバのテキストファイルを開くと
排他制御が解除されています。

これは、OSが勝手に解除しているのでしょうか?
また XP 以降だと、解除されるものと思っていいのでしょうか?


tetrapod  2012-07-26 04:13:01  No: 73485

Linux server に windows client から接続ということは samba と仮定する。
server 側でファイルロックされたままになってしまうということは、
そのファイルは永遠に使えないということなので samba にも自動 unlock の
機構は備わっている。
samba の場合 keepalive や deadtime で指定することができる。
# URI が長すぎるので直接リンクできそうに無いので
http://wiki.samba.gr.jp/ から J0063 で検索とか。

Windows server 側の資料はほかの人にお任せ。


くろ  2012-07-27 18:14:31  No: 73486

tetrapod さん
ありがとうございます。

そうです、samba です
やはり、解除する機構があったんですね。

Windows に関しての資料を探してみたんですが、
全然見つからないですね。。。

なかなかググる単語がむつかしいです。
Windows 共有 解除 ファイル ロック 排他 lock unlock などなど
それっぽいのが見つからない。。。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加