2008/2/6 水曜日

Perl:mutex、二重起動の防止

Filed under: Perl — tiny-p @ 20:15:45

あるプログラムが走っているときに、同時に同じプログラムを起動させたくないときがある。Windows環境であればmutexオブジェクトを使うことができ、Perl にもWin32::Mutexモジュールが存在する。

use Win32::Mutex;
die "二重起動" if(Win32::Mutex->open('hogehoge'));
$mutex=Win32::Mutex->new(1, 'hogehoge');

2行目で他に hogehoge という名前の Mutex オブジェクトが作られていないかどうかチェックし、もし他で hogehoge という名の Mutex オブジェクトが作られていれば、先へ進まずに終了する。3行目では hogehoge という Mutex オブジェクトを作成している。
したがって、このスクリプトを2つ起動しようとしても、2つ目は2行目のチェックで引っかかって終了してくれるはずである。

ただし、タイミングによっては完璧ではないようだ。

参考:http://www.augustus.to/blog/3128/archives/2004/08/index.html

コメント (0) »

この記事にはまだコメントがついていません。

コメント RSS トラックバック URL

コメントをどうぞ

You must be logged in to post a comment.

Copyright (C) 2007 tiny-p. All Rights Reserved.