autoconf
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: why generate output to tmp file and mv to actual file?


From: Bob Friesenhahn
Subject: Re: why generate output to tmp file and mv to actual file?
Date: Fri, 1 Jun 2018 13:55:05 -0500 (CDT)
User-agent: Alpine 2.20 (GSO 67 2015-01-07)

On Fri, 1 Jun 2018, John Calcote wrote:

I recently ran across some sample code in section 19.4 of the Autoconf
manual (modified slightly to reduce example):

$(TESTSUITE): $(srcdir)/testsuite.at $(srcdir)/package.m4
       autom4te --language=autotest -I '$(srcdir)' -o address@hidden 
address@hidden
       mv address@hidden $@

This question isn't about autotest, but rather about the two commands in
this rule - why generate the output into address@hidden and then mv 
address@hidden into address@hidden
Is there some power mv has over autom4te that allows it better access to
the target under some conditions?

A reason to do such a thing is to avoid leaving a partial/corrupt output file in place due to the command writing it encountering an error. The assumption is the the 'mv' command would not be executed if the previous command encountered an error.

Another reason would be in a multi-processing environment (e.g. parallel compile) where the file content (or its timestamp) might be consumed before it is ready. The 'mv' is an atomic operation so once the file is in its final location, it is assured to be completely written.

Bob
--
Bob Friesenhahn
address@hidden, http://www.simplesystems.org/users/bfriesen/
GraphicsMagick Maintainer,    http://www.GraphicsMagick.org/



reply via email to

[Prev in Thread] Current Thread [Next in Thread]