AN HTTPD ゲストブック/コメント集(2001年3月14日18:25)


中田昭雄 nakata@st.rim.or.jp 2001/03/16 22:00

いしどうさん、
現在のActivePerlのドキュメント中の perlport によれば、flock は、

Not implemented (Mac OS, VMS, RISC OS, VOS).
Available only on WindowsNT (not on Windows95). (Win32)

ということです。
もちろんここでいう Windows95 は Windows95/98/Me のことだと思います。
つまり WinNT/2000 では flock が使えますが Win95/98/Me では使えないということになります。

この状況は Perl for Win32 (build 3xx) の時から変わっていないようです。
Perl for Win32 のソースを見た時の記憶では、flock は WindowsAPI の LockFileEx を使っています。ところが LockFileEx は Win95系では使えないので、"flock is not available on Windows95!" とか言うメッセージを出すようになっていました。
つまり、Win32 用に flock を implement したのだけれど Windows95系では LockFileEx が使えないので not available だ、ということではないかと。

Cygwin の Perl5.6.0 では flock が使えるという話もあったのですが、もしそうだとすると Cygwin が LockFileEx をエミュレートするようなことをしているのではないかという気がします。確認してはいませんが。

ところで、ActivePerl では fork は使えるのですね。
同じく perlport の fork のところは

Emulated using multiple interpreters. See the perlfork manpage. (Win32)

となっています。そして perlfork によると、スレッドを擬似プロセスとして fork するようにエミュレートしているそうです。


えむけい VYV03354@nifty.ne.jp 2001/03/16 01:13

PerlのバージョンではなくてOSがNTかどうかが関係するのではありませんか?


いしどう ishidou@po.iijnet.or.jp 2001/03/16 00:42

ohohさんへ

最新版の ActivePerl (build 623) は、flock をサポートしていますよ。
500番台のbuildでもサポートしていたような記憶があります。


中田昭雄 nakata@st.rim.or.jp 2001/03/15 21:18

ohoh さん、
rename が失敗するのは、普通は、リネーム元のファイルがないかリネーム先のファイルが既に存在しているかだと思います。
調べてみてください。
調べてみても原因不明なら、そのCGI一式をメールで送ってください。


ohoh ohki@chusen.co.jp 2001/03/14 18:25

ブラウザからの入力でhtmlを生成する日記タイプのcgiが
renameができず、ファイルが更新されません。

flockを使っているフリーのcgiなのですが、
過去ログを拝見し、ファイルロックが使えないと知り
flockの行に#を書き込み、単一スレッドで使用してみましたが
renameができないとなってしまいます。
このcgiの使用をあきらめた方がよろしいでしょうか?

win95で、pw32i316.exeを実装しています。