当前位置:  开发笔记 > 编程语言 > 正文

实现日志观察器

如何解决《实现日志观察器》经验,为你挑选了1个好方法。

我想知道如何实现类似于tail -fC/C++的程序,这是一个监视并处理添加到日志文件中的新行的程序?



1> jj33..:

您可以使用fseek()清除流上的eof条件.基本上,读到文件的末尾,睡眠一段时间,fseek()(不改变你的位置)清除eof,再次读取到文件结尾.洗,冲洗,重复.man fseek(3)了解详情.

这是perl中的样子.perl的seek()本质上是fseek(3)的包装器,所以逻辑是一样的:

wembley 0 /home/jj33/swap >#> cat p
my $f = shift;
open(I, "<$f") || die "Couldn't open $f: $!\n";

while (1) {
  seek(I, 0, 1);
  while (defined(my $l = )) {
    print "Got: $l";
  }
  print "Hit EOF, sleeping\n";
  sleep(10);
}
wembley 0 /home/jj33/swap >#> cat tfile
This is
some
text
in
a file
wembley 0 /home/jj33/swap >#> perl p tfile
Got: This is
Got: some
Got: text
Got: in
Got: a file
Hit EOF, sleeping

然后,在另一个会话中:

wembley 0 /home/jj33/swap > echo "another line of text" >> tfile

并回到原始程序输出:

Hit EOF, sleeping
Got: another line of text
Hit EOF, sleeping

推荐阅读
手机用户2402851155
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有