$include_dir="/home/hyper-archives/boost/include"; include("$include_dir/msg-header.inc") ?>
From: David Abrahams (dave_at_[hidden])
Date: 2003-08-09 12:08:35
I need the ability to do interprocess synchronization through file
locking, c.f. Java.File.createNewFile and Java.File.deleteOnExit:
---
createNewFile
public boolean createNewFile()
throws IOException
Atomically creates a new, empty file named by this abstract pathname
if and only if a file with this name does not yet exist. The check for
the existence of the file and the creation of the file if it does not
exist are a single operation that is atomic with respect to all other
filesystem activities that might affect the file. This method, in
combination with the deleteOnExit() method, can therefore serve as the
basis for a simple but reliable cooperative file-locking protocol.
Returns:
true if the named file does not exist and was successfully
created; false if the named file already exists
Throws:
IOException - If an I/O error occurred
SecurityException - If a security manager exists and its
SecurityManager.checkWrite(java.io.FileDescriptor) method denies
write access to the file
deleteOnExit
public void deleteOnExit()
Requests that the file or directory denoted by this abstract pathname
be deleted when the virtual machine terminates. Deletion will be
attempted only for normal termination of the virtual machine, as
defined by the Java Language Specification (12.9).
Once deletion has been requested, it is not possible to cancel the
request. This method should therefore be used with care.
Throws:
SecurityException - If a security manager exists and its
SecurityManager.checkDelete(java.lang.String) method denies delete
access to the file
---
On Posix, the first one would be done with
open(..., O_CREAT | O_EXCL)
and the second, I suppose, would be done with a terminate handler.
--
Dave Abrahams
Boost Consulting
www.boost-consulting.com