Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – Perl inotify2为每个文件修改触发两次大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我正在编写一个监视文件以进行更改的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,
我正在编写一个监视文件以进行更改的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 :: 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

大佬总结

以上是大佬教程为你收集整理的linux – Perl inotify2为每个文件修改触发两次全部内容,希望文章能够帮你解决linux – Perl inotify2为每个文件修改触发两次所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: