2

背景情報:

Windows で実行される EXE ファイル script.exe に変換された Perl スクリプトがあります。Script.exe は構成ファイルconfig.iniを読み取り、時々更新します。

Script.exe は、config.iniファイルの場所を指定するコマンドライン引数で実行されます。または、コマンドライン引数なしで実行でき、デフォルトでconfig.iniファイルのデフォルトの場所になります。

ゴール:

同じconfig.iniファイルを使用して script.exe が複数回実行されるのを防ぎます。

これどうやってするの?

4

1 に答える 1

2

flock構成ファイルで使用します。

use Fcntl qw( LOCK_EX LOCK_NB );

open(my $config_fh, '<', $config_qfn)
   or die("Can't open config file \"$config_qfn\": $!\n");

if (!flock($config_fh, LOCK_EX | LOCK_NB)) {
   if ($!{EWOULDBLOCK}) {
      die("Config file $config_qfn already in use\n");
   }

   die("Error trying to lock the config file: $!\n");
}

... # Rest of program. Don't close $config_fh
于 2013-11-26T20:25:55.573 に答える