希望这是一个快速的问题,有人可以指出我正确的方向。
背景资料: 我有一个转换为exe的perl脚本在Windows中运行。 script.exe会读取并有时更新配置文件config.ini Script.exe是使用指定config.ini文件位置的行arg执行的 或者它可以使用out arg运行,并且默认为config.ini文件的默认位置
目标: 使用相同的config.ini文件阻止script.exe多次执行。
任何建议或提示将不胜感激。
由于
MM
答案 0 :(得分: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