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