我有一个子例程,我试图在其中专门锁定一组文件(一次一个)并在给定的时间内(通过sleep)保持该锁定。我正在尝试添加让用户在按下某个键(例如回车键)时解锁当前锁定(睡眠)文件的功能。我只是不确定要朝着哪个方向努力。使用 STDIN 和检查 \n 的每一次尝试都没有奏效。谢谢。
下面是子程序。我切换到我想要文件的目录。创建从 1 到指定文件数的文件。对于每个文件,都会设置一个排他锁,然后休眠一段指定的时间。
编辑:我没有提到这一点是我的错,但是这个脚本将在 Windows 环境中运行。理想情况下,我想要一个不需要安装 Perl 中不包含的额外模块的解决方案。(这是因为 breqwas 解决方案中的模块不支持 Windows 而提出的)。谢谢。
sub lockFiles{
#creates files that are locked for a specific amount of seconds.
chdir("lock files")or die "Unable to enter dir $!\n";
opendir(DIR,".") or die "Can't open the current directory: $!\n";
#file iterator
my $i=1;
#for each file lock it and sleep the given amount of time
while($i<=$numberOfFiles){
open FILE, ">>", "test$i.txt" or die $!;
flock(FILE, 2) or die "Could not lock test$i.txt\n";
print "test$i.txt locked, locking for $timeToSleep seconds\n";
print "Press ctrl+c to kill this\n";
sleep($timeToSleep);
$i++;
close(FILE);
}
closedir(DIR);
#change back to the parent folder
chdir("..") or die "Can't change to the directory: $!\n";
print "subRoutine lockFiles success\n";
}