質問: cgi二重起動防止ロック処理 ズバリ、cgi二重起動防止ロック処理のソースをもしよかったら、だれか教えてください。
回答: 実用的には、sephy さんの方法でほぼ十分だと思います。しかし、 もし絶対に二重に起動しては困るという場合には、二つのcgiがほ ぼ同時に起動されてしまうと、つまり相次いで getc して中身がな いことを確認してしまうと、二つともロックが成功してしまうので 完全ではありません。 unix 上の perl であると仮定しますが、ロックに使える機構とし ては、flock か fcntl を使う方法、link, symlink, mkdir は存在 していると成功しないことを利用する方法、umask を適当に(0777 あたりに)セットしてアクセス禁止のファイルを作る方法が考えら れます。 flock/fcntl は unix がプロセスの存否を管理しますので、プロセ スが不意に死んでもロックがかかりっぱなしにならないという利点 があります。このうち、fcntl は unix の低レベルのインタフェー スなのでちょっと面倒かもしれません。flock が簡単でしょう。 まともな perl の参考書なら、flock の解説もあると思います。 man perlfunc で flock の項を調べてもサンプルのコードが載って います。 もしコードが必要なら、補足してください。ただし、ロックに失敗 した側がは、そのまま終了してしまえばいいのか、ロックできるよ うになるまで待ってロックするのかで変わりますので、明記してく ださい。また、ロック後に操作するファイルがあらかじめ固定され ている場合は、そのファイルを使ってロックする方が、無駄なファ イルを作らずにすみます。