[M3devel] random-acces I/O
Dragiša Durić
dragisha at m3w.org
Sun Mar 2 01:12:44 CET 2008
rdwr is package by Blair MacIntyre and it's not related to anything
File.* except indirectly, ie if you make File Wr part of TeeWr.
On Sat, 2008-03-01 at 14:49 -0800, Mika Nystrom wrote:
> Hi Hendrik,
>
> The answer is, "it depends." As a matter of fact this was my biggest
> area of trouble when porting a program from PM3 on Unix to
> PM3/Klagenfurt for NT386GNU. On NT386GNU, the default is for
> Modula-3 to avail itself of Windows's mandatory file locking, whereas
> POSIX has no such thing. This means that a Modula-3 program on
> NT386GNU can't even open a file for reading if you are "lessing"
> it for instance. I am sure it can be worked around, but I never
> bothered to figure out how, sorry (because the behavior I needed
> was in fact strict locking of this kind, which I had to go to special
> lengths to get on Unix!)
>
> On Unix, things are a bit more as you describe them, but not exactly.
> You can definitely have an Rd.T and a Wr.T on a single file, but I
> do not believe that the Rd.T and Wr.T will be aware of each other's
> existence (I could be wrong). However, there is a package called
> rdwr(?) that I think may have the sort of functionality you're
> looking for. Maybe.
>
> File locking is strictly an OS issue as far as I know and that is not
> something that Rd and Wr concern themselves with.
>
> If you need this kind of low-level access I have a feeling Rd and Wr
> are too high-level for you. I would suspect you want to build something
> with rdwr (or some other means of getting an Rd out of a Wr or vice
> versa) and then extend it with routines for maintaining a faithful
> disk-based copy of what you want... using lower-level access methods.
>
> Oh yes Rd and Wr are documented in detail in chapter 6 of the Green Book.
>
> Mika
>
> hendrik at topoi.pooq.com writes:
> >I need to do direct-access I/O from a Modula 3 program with a file
> >format that is externally specified. It is necessary to both read and
> >write in random fashion during a run of the program, prefereably without
> >having to close or open the file each time.
> >
> >I expect the answers to the following questions are "Yes", but I'd
> >appreciate confirmation:
> >
> > ? If I have a File.T (obtained from FS.OpenFile) can I have both a
> > Rd.T and a Wr.T active on it simultaeously?
> >
> > ? Will things written using the Wr.T be immediately available
> > for reading with the Rd.T, with no buffereing problems?
> >
> > ? Are there methods for locking the file -- or portions of it --
> > against simutaneous access by other programs, including ones written
> > in other languages?
> >
> >-- hendrik
--
Dragiša Durić <dragisha at m3w.org>
More information about the M3devel
mailing list