Tracking a file in real-time

Garry T. Williams gtwilliams at gmail.com
Sat Oct 13 18:19:20 UTC 2007


On Saturday 13 October 2007 13:22:44 Tony Nelson wrote:
> At 7:55 AM -0400 10/13/07, Garry T. Williams wrote:
> >On Thursday 11 October 2007 08:50:31 FS wrote:
> >> I have a need to track changes to a file being made in real-time.
> >
> >Curtis mentioned inotify(7).  Here's a small sample program using this
> >interface.
> 
> AFAICT, inotify cannot solve the OP's problem.  He already knows the file.
> He needs to know /where/ and /what/ changed in the file.  inotify can
> optimize the actual solution so it won't need polling.

Yes.  Inotify handles the when (you're called back whenever a file is
modified).  The application can then determine the what.

I don't know about the where.  Not sure I understand what you mean by
that.

Of course, if we knew more of the detailed requirements and data
structures, we could design the "diff" part of the application too.  I
assume the OP is capable of handling that part.

Finally, it may not be possible to get called back on each atomic
change.  That is, a monitoring application might get a call that was
the result of multiple changes.  (I don't know the design of inotify
well enough to say for sure.  I haven't experimented with the
IN_MODIFY event to be able to even guess, either.)  In that case, if
each individual change must be tracked, then you're probably left with
the "changers" need to be modified to accomplish the task.  That might
be the best solution anyway.  Designing a robust daemon task is one
thing.  Guaranteeing that it never misses a change is another thing.

-- 
Garry T. Williams --- +1 678 656-4579




More information about the fedora-list mailing list