From: "Randy Brukardt" <randy@rrsoftware.com>
Subject: Re: Exclusive file access
Date: Tue, 1 Sep 2015 15:36:43 -0500
Date: 2015-09-01T15:36:43-05:00 [thread overview]
Message-ID: <ms528r$ijd$1@loke.gir.dk> (raw)
In-Reply-To: lyh9nexjed.fsf@pushface.org
"Simon Wright" <simon@pushface.org> wrote in message
news:lyh9nexjed.fsf@pushface.org...
> ahlan@marriott.org writes:
>
>> Bruce B. tells me that there are routines in the package Directories
>> that can be used to check if the file is already open. However that
>> wouldn't be a full solution because there would be nothing to stop any
>> other program from opening the file and messing with it. However it
>> would be a start. If the file was already opened (by some other
>> process) then I could avoid opening it. Unfortunately I couldn't find
>> any such routine in Ada.Directories. Am I going blind?
...
> I think you are rather out of luck. I can see how it might be done on OS
> X [open(2) with O_EXLOCK, then write(2)].
It's trivial to do on Windows, one just needs to open the file with the
correct sharing flags (and I think that the correct flag is the default).
Sharing is a built-in part of the file descriptor in Windows; there's no
need for separate locking so long as you want to do full-file exclusion (as
in this case).
Typically, those sharing flags are made available through a Form parameter.
Janus/Ada uses 'R' and 'W' to indicate read and write sharing
(respectively). (So a form of "RW" opens a file allowing read and write
sharing, while opening a file with "" - the default - opens it for exclusive
access.) But this will be different on different compilers, plus it's
specific to Windows.
Randy.
next prev parent reply other threads:[~2015-09-01 20:36 UTC|newest]
Thread overview: 52+ messages / expand[flat|nested] mbox.gz Atom feed top
2015-08-27 13:52 Exclusive file access ahlan
2015-08-27 14:27 ` gautier_niouzes
2015-08-31 23:20 ` Randy Brukardt
2015-09-01 16:23 ` Pascal Obry
2015-09-01 20:48 ` Randy Brukardt
2015-08-27 14:42 ` Björn Lundin
2015-08-27 14:48 ` G.B.
2015-08-27 15:08 ` Björn Lundin
2015-08-27 18:38 ` tmoran
2015-08-27 23:16 ` Georg Bauhaus
2015-08-27 23:29 ` Pascal Obry
2015-08-28 7:25 ` Georg Bauhaus
2015-08-27 15:15 ` ahlan
2015-08-27 18:29 ` Jeffrey R. Carter
2015-08-28 5:41 ` ahlan
2015-08-28 7:10 ` Georg Bauhaus
2015-08-28 17:40 ` ahlan
2015-08-28 19:49 ` Anh Vo
2015-08-28 21:06 ` Simon Wright
2015-08-28 21:38 ` Jeffrey R. Carter
2015-08-29 7:05 ` Dmitry A. Kazakov
2015-08-29 8:31 ` Pascal Obry
2015-08-29 12:02 ` Dmitry A. Kazakov
2015-08-30 11:35 ` Florian Weimer
2015-08-30 12:44 ` Dmitry A. Kazakov
2015-08-30 19:37 ` Florian Weimer
2015-08-31 7:22 ` Dmitry A. Kazakov
2015-08-31 21:12 ` Florian Weimer
2015-09-01 7:26 ` Dmitry A. Kazakov
2015-09-07 18:27 ` Florian Weimer
2015-09-07 19:06 ` Dmitry A. Kazakov
2015-09-11 16:54 ` Florian Weimer
2015-08-31 23:34 ` Randy Brukardt
2015-09-01 7:33 ` Dmitry A. Kazakov
2015-08-29 16:07 ` gautier_niouzes
2015-08-29 17:12 ` Dmitry A. Kazakov
2015-09-01 12:37 ` brbarkstrom
2015-09-01 14:05 ` ahlan
2015-09-01 15:13 ` Simon Wright
2015-09-01 20:36 ` Randy Brukardt [this message]
2015-09-01 15:17 ` Jacob Sparre Andersen
2015-09-01 20:37 ` Randy Brukardt
2015-09-01 16:05 ` G.B.
2015-09-01 20:02 ` brbarkstrom
2015-09-01 21:17 ` Simon Wright
2015-09-05 15:52 ` Björn Lundin
2015-09-01 20:31 ` Randy Brukardt
2015-09-01 15:31 ` ahlan
2015-09-05 15:56 ` Björn Lundin
2015-09-06 17:38 ` brbarkstrom
2015-09-06 19:52 ` Björn Lundin
2015-09-07 15:18 ` brbarkstrom
replies disabled
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox