2016-01-20 48 views
0

如何检查文件被锁定以便在perl中写入。我不想再次使用锁,如果它失败,它会告诉它被其他进程锁定。如何检查文件被锁定在perl中写入,而无需再次实际锁定它?

flock (FILE, LOCK_EX | LOCK_NB) 

我不想使用上述技术,因为它锁定文件,如果它没有被其他进程锁定。

+2

做什么用的锁定和释放问题? – Sobrique

+0

http://unix.stackexchange.com/questions/85994/how-to-list-processes-locking-file –

+0

我希望孩子只有在父母完成书写并锁定从父母释放时写入文件。我怎样才能做到这一点? 我想要一个条件,如果文件没有锁定,然后开始写入文件。 –

回答

3

我想要一个条件,如文件没有锁定,然后开始写入文件。

你说你希望在文件未锁定的事,但你没有说你要当文件被锁定,该怎么办。我认为你想等待它解锁。

如果是这样,使用以下命令:

open(my $fh, ">>", $qfn) or die $!; 
flock($fh, LOCK_EX) or die $!; 
print($fh ...); 
close($fh); 

如果你想先清除文件,请获取锁后执行以下操作:

truncate($fh, 0) or die $!; 
+0

感谢您的意见。 我找到了解决方案。我可以使用Linux命令“fuser - ”检查文件是否被锁定。它返回进程ID,如果它被锁定,否则返回null。这可以用来代替尝试锁定锁定的文件。 –

相关问题