Detect when a file has been recreated using a stat watcher

Marc Lehmann schmorp at
Fri Dec 26 22:47:28 CET 2008

On Wed, Dec 24, 2008 at 12:40:46PM +0200, Graham Leggett <minfrin at> wrote:
> >I don't know, it depends entirely on how you define "logfile rotation",
> >which probably relies on whatever program does the actual rotation.
> As in the file gets deleted and/or truncated, and the event driven 
> application watching the file gets notified by some mechanism that this 
> has happened.

Well, the ctime would likely change in those cases, as well as (likely)
the inode number and (likely) the size, all of which could be detected via
a stat watcher.

> >We were talking about timestamp resolution, and what to do about
> >it. And this is cetrainly being explained in the docs.
> Er, no, I think you have misunderstood my question.

No, you completely midrepresent your e-mail, and that's no fun.

> I am not talking at all about timestamp resolution,

You *were* talking about stat time resolution.

> Both inotify and kqueue can (apparently) detect file deletion/renaming
> events,
Firts of all, no, they can't, at least not with certainty. This detection
only works on some filesystems for example.

> although it seems that libev does not (yet) expose these events

libev *caqnnot* expose these events as such because a) libev tries to be
reliable and b) libev is a portable library, and the only thing available
portably is stat.

libev is *not* a wrapper around inotify, it only *uses* inotify to
implement its (portable) stat watchers, and it only uses inotify as a hint
mechanism (and in this case it actually does check for file deletions).

So if you want to write an OS X only program, then you should be free to
use kqueue, similarly for gnu/linux, but it's not acceptable for libev to
become, say, a linux-only library.

                The choice of a       Deliantra, the free code+content MORPG
      -----==-     _GNU_    
      ----==-- _       generation
      ---==---(_)__  __ ____  __      Marc Lehmann
      --==---/ / _ \/ // /\ \/ /      pcg at
      -=====/_/_//_/\_,_/ /_/\_\

More information about the libev mailing list