加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > Linux > 正文

linux – Perl inotify2为每个文件修改触发两次

发布时间:2020-12-14 01:18:58 所属栏目:Linux 来源:网络整理
导读:我正在编写一个监视文件以进行更改的Perl脚本. #!/usr/bin/perluse 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 "c
我正在编写一个监视文件以进行更改的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: $countern";
    }
) or die $!;

1 while $inotify->poll;

如果我像这样测试它,每次/ tmp / foo改变时,这个处理程序被调用两次(递增$counter两次):

echo abc > /tmp/foo

为什么?

解决方法

使用>>正如@Lajos Veres建议的那样,或观看CLOSE_WRITE事件(对于Linux :: Inotify2模块来说是 IN_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

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读