用C语言实时读取文件行
我知道如何在C中执行基本的文件操作,但如果可能的话,我想做的是以某种方式创建一个表示实时运行文件的变量(例如,来自apache的每秒更新的访问日志)。然后,我希望能够读取文件中输入的最后一行,无论当前是否有任何其他进程打开了该文件 我想到的代码如下:用C语言实时读取文件行,c,file,real-time,C,File,Real Time,我知道如何在C中执行基本的文件操作,但如果可能的话,我想做的是以某种方式创建一个表示实时运行文件的变量(例如,来自apache的每秒更新的访问日志)。然后,我希望能够读取文件中输入的最后一行,无论当前是否有任何其他进程打开了该文件 我想到的代码如下: int main(){ FILE *live=fattachto("/path/to/apaches/access_log"); long lastupdated=live->lastwrite(); while(1){ if
int main(){
FILE *live=fattachto("/path/to/apaches/access_log");
long lastupdated=live->lastwrite();
while(1){
if(live->lastwrite() != lastupdated){printf("File was just updated now\n");}
sleep(1);
}
}
是的,我确实在我的代码中设置了睡眠,因为我想确保我的代码不会过热cpu
上面的代码不会按原样执行,因为我正在寻找用于生成最终结果的正确函数集
有什么想法吗?一旦查找到日志文件的末尾,为什么不设置行缓冲或使用较小的缓冲读取大小?然后简单地在文件中添加行时对行执行阻塞读取
然后,当读取返回时,您可以对任何感兴趣的输入发送信号、设置标志或启动处理。请不要这样编写代码。代码是艺术,它不应该只是编译和工作,这段代码对我来说太难看了,我再也不会回到这个问题上来了。我想你在寻找系统调用。术语“实时”是最被误用和/或误解的术语之一。请提供您使用的定义。在正确的硬件和正确的操作系统上,应用程序将无法“过热”CPU。为什么不使用它或者找到它的源代码作为起点呢