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_Monitoring_Process - Fatal编程技术网

C-使用进程监视文件

C-使用进程监视文件,c,file,monitoring,process,C,File,Monitoring,Process,我必须观察一定数量的日志文件(可以随时更改),以查看这些文件在结构中是否包含“禁止”一词。在执行过程中,我对执行的最佳方式有些怀疑 是否有一个流程来分析要监控的文件列表是一个好主意,每次我们看到一个文件发生了变化,我们都会发送一个流程来查看其中是否包含“禁止”一词 作为一个日志文件,修改只发生在最后,因此要查看文件是否已更改,我们必须查看大小是否也已修改。进行«活动等待»: 有没有人能给我一些想法,告诉我我所做的是不是有什么不正确的地方?对于单个文件来说,这似乎与less的做法非常相似。使用st

我必须观察一定数量的日志文件(可以随时更改),以查看这些文件在结构中是否包含“禁止”一词。在执行过程中,我对执行的最佳方式有些怀疑

  • 是否有一个流程来分析要监控的文件列表是一个好主意,每次我们看到一个文件发生了变化,我们都会发送一个流程来查看其中是否包含“禁止”一词
  • 作为一个日志文件,修改只发生在最后,因此要查看文件是否已更改,我们必须查看大小是否也已修改。进行«活动等待»:

  • 有没有人能给我一些想法,告诉我我所做的是不是有什么不正确的地方?

    对于单个文件来说,这似乎与
    less
    的做法非常相似。使用
    strace
    我瞥了一眼
    less
    的功能,它似乎只是保持一个打开的文件描述符,然后在循环中休眠一秒钟,尝试读取更多的输入。如果没有太多的日志文件需要监视(并且您不介意为每个日志文件保留一个打开的文件描述符),也许您可以使用这种方法。

    操作系统为这类事情提供了特殊的接口。您是否需要针对不同操作系统的解决方案,或者是否可以限制为特定的操作系统?如果您跟踪以前的大小,您最好将
    seek()
    定位到该位置,只阅读和检查新内容。我完全同意Dmitri Chubarov的观点,例如,对于inotify的Linux。这是你可以使用的吗?@fred你知道为什么
    less
    不会在Linux上使用inotify吗?
    While(1)
     if (“old size!= new size”)
      send process run for this file to see if contains some words “forbidden”.