Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.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_File_Real Time - Fatal编程技术网

用C语言实时读取文件行

用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

我知道如何在C中执行基本的文件操作,但如果可能的话,我想做的是以某种方式创建一个表示实时运行文件的变量(例如,来自apache的每秒更新的访问日志)。然后,我希望能够读取文件中输入的最后一行,无论当前是否有任何其他进程打开了该文件

我想到的代码如下:

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。为什么不使用它或者找到它的源代码作为起点呢