linux - 如何检查文件是否已锁定以写入 perl 而无需再次实际锁定?

标签 linux perl file-locking flock

如何在 perl 中检查文件是否被锁定以写入。我不想再次使用锁定,如果它失败,它会告诉它正在被其他进程锁定。

flock (FILE, LOCK_EX | LOCK_NB)

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

最佳答案

I want a condition like if the file is not locked then start writing to file.

你说了文件未锁定时你想做什么,但你没有说文件锁定时你想做什么。我想你想等它解锁。

如果是这样,请使用以下内容:

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

如果想先清空文件,在获得锁后进行如下操作:

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

关于linux - 如何检查文件是否已锁定以写入 perl 而无需再次实际锁定?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34894711/

相关文章:

java - 如何在java程序中调用shell脚本?

java - 从 UTF-8 base64 编码识别日语

linux - RedHat 中使用 perl 的 "cannot execute binary file "

c - mkdtemp 需要 _DARWIN_C_SOURCE for unistd.h

c - C 中的共享内存 : Shmget Issues

python - 在 python 中使用 lockfile 后写入文件时出现 PermissionError [Errno 13]

linux - 在 Linux 上锁定 NFS 文件时如何避免有问题/未定义的行为?

windows - 在远程机器 (windows) 上锁定文件的简单方法?

c - 我不明白为什么编译器给我这个代码的错误

perl - 使用 Getopt::Long 时出现错误 "panic: attempt to copy freed scalar"