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”.