2

背景资料:

我有一个 Perl 脚本转换为在 Windows 上运行的 EXE 文件 script.exe。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 回答