comp.lang.ada
 help / color / mirror / Atom feed
From: ahlan@marriott.org
Subject: Re: Exclusive file access
Date: Tue, 1 Sep 2015 08:31:23 -0700 (PDT)
Date: 2015-09-01T08:31:23-07:00	[thread overview]
Message-ID: <6725e7d9-eb8e-49b0-985d-9c1b1bbd6fd8@googlegroups.com> (raw)
In-Reply-To: <eec18573-876b-4151-b13a-15a103bba30e@googlegroups.com>

On Thursday, August 27, 2015 at 3:52:36 PM UTC+2, ah...@marriott.org wrote:
> Dear All,
> 
> Obviously I'm misunderstanding something here.
> 
> I thought that if two processes tried to open the same file for write access then the second process would get an exception.
> 
> I have a simple example which when compiled using GnatPro 7.3.1 and run under 32-bit Windows XP demonstrates that this is not so.
> 
> Which then begs the question on how to detect if the file is in use and abort if it is.
> This should be simple but obviously too complex for my tiny brain.
> Does anyone know how to do this from Ada (without resorting to the OS directly)?
> 
> My simple test program is
> 
> package body Test is
> 
>   package Io renames Ada.Text_IO;
> 
>   procedure Work is
>     The_File : Io.File_Type;
>   begin
>     Io.Open (The_File, Io.Out_File, "Test.Txt");
>     for Count in Natural'value(Ada.Command_Line.Argument(1)) .. Natural'value(Ada.Command_Line.Argument(2)) loop
>       Io.Put_Line (The_File, "Count =" & Count'img);
>       Io.Put_Line ("Count =" & Count'img);
>       delay 1.0;
>     end loop;
>     Io.Close (The_File);
>   exception
>   when others =>
>     Io.Put_Line ("Exception");
>   end Work;
> 
> end Test;
> 
> If I execute this from one process with parameters 1 10 and then when it reaches 8 start the program again from a second process with parameters 3 7 on the same machine, the resultant file is a nice mixture! :-(
> 
> Count = 3
> Count = 4
> Count = 5
> Count = 6
> Count = 7
> Count = 6
> Count = 7
> Count = 8
> Count = 9
> Count = 10
> 
> This is not what I want. I want what the first instance produces and the second instance to fail. Surely nobody would want otherwise ;-)
> 
> Best wishes,
> Ahlan

I have no idea about Linux but it is perfectly possible under Windows. However this doesn't stop people (including Microsoft) from creating lock files that then sometimes get left behind when a program crashes rendering the file locked forever! So the presence of lock files doesn't mean that the opsys can't lock exclusively.
I mentioned a logger not because I want to write a logger but as a simple example of somthing someone might want to write.

  parent reply	other threads:[~2015-09-01 15:31 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
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 [this message]
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