gpt4 book ai didi

linux - Perl inotify2 每次文件修改触发两次

转载 作者:IT王子 更新时间:2023-10-29 01:01:05 25 4
gpt4 key购买 nike

我正在编写一个 Perl 脚本来监视文件的更改。

#!/usr/bin/perl
use strict;
use Linux::Inotify2;

my $inotify = new Linux::Inotify2 or die $!;
my $filename = "/tmp/foo";
my $counter = 0;

$inotify->watch (
$filename,
IN_MODIFY,
sub {
++$counter;
print "changed: $counter\n";
}
) or die $!;

1 while $inotify->poll;

如果我这样测试它,每次/tmp/foo 更改时都会调用此处理程序两次(两次递增 $counter):

echo abc > /tmp/foo

为什么?

最佳答案

按照@Lajos Veres 的建议使用>>,或者观察CLOSE_WRITE 事件(对于Linux::Inotify2IN_CLOSE_WRITE模块),

echo > /tmp/foo

inotifywait -m /tmp/foo
Setting up watches.
Watches established.
/tmp/foo MODIFY
/tmp/foo OPEN
/tmp/foo MODIFY
/tmp/foo CLOSE_WRITE,CLOSE

关于linux - Perl inotify2 每次文件修改触发两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19115983/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com