[tpm] Renaming a file with multiple scripts having opened filehandles on it

Uri Guttman uri at StemSystems.com
Fri Oct 2 20:47:06 PDT 2009


>>>>> "LREQ" == Liam R E Quin <liam at holoweb.net> writes:

  LREQ> On Fri, 2009-10-02 at 20:44 -0400, Madison Kelly wrote:
  >> [...]  I noticed that if a second program/thread 
  >> had an open file handle on the log file being 'rename'ed, it would 
  >> follow the log file to the new name. This makes sense, now that I think 
  >> of it (I am guessing it tracks the inode?).


  LREQ> This is platform specific, but yes, on Unix-like systems, if you
  LREQ> rename a file, something writing to that file will continue to write
  LREQ> to it under the new name.  On a Unix (and Linux) file system,
  LREQ> the directory entries (e.g. for "/etc/group" I mean the "group"
  LREQ> entry in the "/etc" directory) just point to where the data is
  LREQ> stored - this is why when you use "ln group fizz", there are
  LREQ> now two names for the same data, and if you remove either one,
  LREQ> the other remains behind.  This is different from symbolic links,
  LREQ> ln -s, of course.

  >> 
  >> What I want to do though is have some way for other threads recognize 
  >> that the file name has changed.

  LREQ> You'd have to notify them, e.g. with a shared variable or a signal of
  LREQ> some sort.

this is also why the best loggers use a server to do the logging and the
programs send log message to it. then you only have one program opening
and writing to the log files and you can manage/rotate them
cleanly. having multiple processes logging to the same file is a poor
design. one other way around it besides a shared variable or such is to
mark the log dir with a flag file. this can be checked each time a
process wants to write to the log file. it will slow things down but
allow for the current design to work with log rotation.

uri

-- 
Uri Guttman  ------  uri at stemsystems.com  --------  http://www.sysarch.com --
-----  Perl Code Review , Architecture, Development, Training, Support ------
---------  Gourmet Hot Cocoa Mix  ----  http://bestfriendscocoa.com ---------


More information about the toronto-pm mailing list