Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/perl/11.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C++ 当一个单独的应用程序正在写入日志文件时,从日志文件中读取数据_C++_Perl_Macos_File Io_Logging - Fatal编程技术网

C++ 当一个单独的应用程序正在写入日志文件时,从日志文件中读取数据

C++ 当一个单独的应用程序正在写入日志文件时,从日志文件中读取数据,c++,perl,macos,file-io,logging,C++,Perl,Macos,File Io,Logging,我想监视应用程序正在写入的日志文件。我希望在写入文件时或之后不久逐行处理该文件。我还没有找到一种方法来检测文件在到达eof后是否已被扩展 需要在MAC和PC上工作,并且可以是任何语言,虽然我最熟悉C++和perl。 有人对最佳方法有什么建议吗?在Perl中,该模块完全满足您的需要。一个足够通用的答案: 大多数语言在EOF上返回未读取任何数据。您可以在一段时间后重新尝试读取,如果文件在此后增长,则操作系统将返回数据。您应该能够使用从tail-f读取标准iotail-f的本质是以下循环: open

我想监视应用程序正在写入的日志文件。我希望在写入文件时或之后不久逐行处理该文件。我还没有找到一种方法来检测文件在到达eof后是否已被扩展

<代码>需要在MAC和PC上工作,并且可以是任何语言,虽然我最熟悉C++和perl。
有人对最佳方法有什么建议吗?

在Perl中,该模块完全满足您的需要。

一个足够通用的答案:


大多数语言在EOF上返回未读取任何数据。您可以在一段时间后重新尝试读取,如果文件在此后增长,则操作系统将返回数据。

您应该能够使用从tail-f读取标准io

tail-f的本质是以下循环:

open IN, $file;
while(1) {
  my $line = <IN>;
  if($line) {
    #process line...
  } else {
    sleep(1);
    seek(IN,0,1);
  }
}
close IN;
在$file中打开;
而(1){
我的$line=;
如果($行){
#生产线。。。
}否则{
睡眠(1);
搜索(IN,0,1);
}
}
接近;

调用的目的是清除EOF标志。

我本想通过tee输出操作,然后跟踪(或使用循环)tee创建的文件