嗨,伙计们,我正在跟进我的问题,我还没有得到答案。
我简化了一切,有三个文件
abc.txt
file1.php
file2.php
在同一个目录中,两个php文件的内容都是相同的:
<?php
$x = fopen("/var/www/abc.txt", "w");
if (flock($x, LOCK_EX|LOCK_NB)) {
print "No problems, I got the lock, now I'm going to sit on it.";
while (true)
sl
的flock是在Linux中基于flock()实现的吗?
仅通过查看锁文件,我们能判断命令是否由进程运行吗?我发现,当由flock保护的命令完成运行时,锁文件似乎没有变化。下面是它运行的时间和完成运行的时间:
$ ls -l ../sleep.flock.file
-rw-rw-r-- 1 t t 0 Oct 30 14:01 ../sleep.flock.file
$ ls -l ../sleep.flock.file
-rw-rw-r-- 1 t t 0 Oct 30 14:01 ../sleep.flock.file
谢谢。
下面的Perl子程序使用File::FcntlLock检查文件是否被锁定。
为什么即使文件被锁定,它也返回0并打印/tmp/test.pid is unlocked.?
sub getPidOwningLock {
my $filename = shift;
my $fs = new File::FcntlLock;
$fs->l_type( F_WRLCK );
$fs->l_whence( SEEK_SET );
$fs->l_start( 0 );
$fs->l_len( 0 );
my $fd;
当我执行以下操作时,我没有看到任何锁文件(如果flock()使用了它?)。
问题是,我可以多次运行相同的脚本,但它不会将文件归档。
我需要安装Fnctl包吗?
我做错了什么?
#!/usr/bin/perl
use warnings;
use strict;
use Fcntl ':flock'; # Import LOCK_* constants
my $file = 't';
my $can_lockin = 1;
open(my $fh, '>', $file) or die "Could not open '$