On 13/07/2012 21:47, Kevin Cox wrote:

On Jul 13, 2012 4:40 PM, "OlaOst" <ola...@gmail.com
<mailto:ola...@gmail.com>> wrote:
 >
 > I'm working on a program (using dmd 2.059 under windows) that
automatically reloads the contents of a file if it has changed, by
checking the last modified timestamp on the file every 0.2 seconds, then
using the readText function in std.file to read in the file contents.
 >
 > It works pretty well, but every once in a while I get a "The process
cannot access the file because it is in use by another process" error
message. I guess this happens when my D program tries to read the file
before the text editor manages to close its handle on the file.
 >
 > This would be fair enough if I was writing to the file in my D
program, but I only want to read from it. Is this a bug or is there a
better way to get file contents in D?

While the text editor is writing the file reading it is a silly thing to
do (no one knows what's there).  I'm not familiar with windows but
locking under Linux works as so.  Any number or processes can have a
read lock but if there is a write lock only the single process can
access that file.

Also isn't there something like inotify on windows?  Polling sounds like
the wrong solution.


Yes:

http://msdn.microsoft.com/en-us/library/windows/desktop/aa365261%28v=vs.85%29.aspx

It's not straight forward to use though and I doubt that the necessary function definitions are provided by the default dmd windows imports.

--
My enormous talent is exceeded only by my outrageous laziness.
http://www.ssTk.co.uk


Reply via email to