www.digitalmars.com         C & C++   DMDScript  

digitalmars.D.learn - file locks

reply llee <llee goucher.edu> writes:
Is there any way to lock a file in D. I'm writing an application that needs to
support concurrent access to a file, and would like to lock the file during
write operations to prevent other process instances from reading invalid data.
Jul 30 2008
next sibling parent reply BCS <ao pathlink.com> writes:
Reply to llee,

 Is there any way to lock a file in D. I'm writing an application that
 needs to support concurrent access to a file, and would like to lock
 the file during write operations to prevent other process instances
 from reading invalid data.
 
there may be some D library calls to do it (I haven't seen one, or looked) but if there isn't, you can always fall back on however you would do it in C.
Jul 30 2008
parent Sean Kelly <sean invisibleduck.org> writes:
BCS wrote:
 Reply to llee,
 
 Is there any way to lock a file in D. I'm writing an application that
 needs to support concurrent access to a file, and would like to lock
 the file during write operations to prevent other process instances
 from reading invalid data.
there may be some D library calls to do it (I haven't seen one, or looked) but if there isn't, you can always fall back on however you would do it in C.
On POSIX systems, file locking is purely cooperative. There is no way to prevent users from opening your file if they so choose. For this reason, I consider file locking largely useless beyond the scope of how a specific application behaves with respect to files it controls. Sean
Jul 30 2008
prev sibling parent reply "Koroskin Denis" <2korden gmail.com> writes:
On Wed, 30 Jul 2008 20:14:59 +0400, llee <llee goucher.edu> wrote:

 Is there any way to lock a file in D. I'm writing an application that  
 needs to support concurrent access to a file, and would like to lock the  
 file during write operations to prevent other process instances from  
 reading invalid data.
In Tango, when you create a FileConduit you specify a Share attribute that affects concurrent file access policy: enum Share : ubyte { None=0, /// no sharing Read, /// shared reading ReadWrite, /// open for anything } Is it what are you looking for?
Jul 30 2008
parent reply llee <llee goucher.edu> writes:
Koroskin Denis Wrote:

 On Wed, 30 Jul 2008 20:14:59 +0400, llee <llee goucher.edu> wrote:
 
 Is there any way to lock a file in D. I'm writing an application that  
 needs to support concurrent access to a file, and would like to lock the  
 file during write operations to prevent other process instances from  
 reading invalid data.
In Tango, when you create a FileConduit you specify a Share attribute that affects concurrent file access policy: enum Share : ubyte { None=0, /// no sharing Read, /// shared reading ReadWrite, /// open for anything } Is it what are you looking for?
Looks good, but I'm using Phobos.
Jul 30 2008
parent Rakan Alhneiti <rakan.alhneiti nospam.gmail.com> writes:
llee wrote:
 Koroskin Denis Wrote:
 
 On Wed, 30 Jul 2008 20:14:59 +0400, llee <llee goucher.edu> wrote:

 Is there any way to lock a file in D. I'm writing an application that  
 needs to support concurrent access to a file, and would like to lock the  
 file during write operations to prevent other process instances from  
 reading invalid data.
In Tango, when you create a FileConduit you specify a Share attribute that affects concurrent file access policy: enum Share : ubyte { None=0, /// no sharing Read, /// shared reading ReadWrite, /// open for anything } Is it what are you looking for?
Looks good, but I'm using Phobos.
AFAIK, on windows, opening a file in binary mode locks the file from being opened. it displays "Already in use" message. i wrote a program to lock files in vb6 years ago and it worked. Dont know about Linux and it's behavior on such thing
Jul 30 2008