windows file locking

Hi I need to open a file and keep it open for writing (a log file). Another process has to read from this file. On windows the second process (e.g. tail -f) can not open the file. How can I open a file without this locking? regards Stefan

Hi Stefan,
Haskell I/O systems implements single writer-multiple readers file locking. See
http://www.haskell.org/ghc/docs/latest/html/libraries/base/System-IO.html#8
Cheers,
Krasimir
On 10/11/06, Stefan Aeschbacher
Hi
I need to open a file and keep it open for writing (a log file). Another process has to read from this file. On windows the second process (e.g. tail -f) can not open the file. How can I open a file without this locking?
regards
Stefan
_______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe

On 10/11/06, Stefan Aeschbacher
Hi
I need to open a file and keep it open for writing (a log file). Another process has to read from this file. On windows the second process (e.g. tail -f) can not open the file. How can I open a file without this locking?
Using base-package's IO-system, that is not possible as far as I know. The flag you need to pass CreateFile (api call which is used to open practically all files) is FILE_SHARE_READ. You can find these in Win32-package, but files opened via raw api bindings don't work well together with base-packages IO-system (ie, you need to read and write using rawish api calls.) Best regards, Esa

Hello Esa, Wednesday, October 11, 2006, 2:13:49 PM, you wrote:
Using base-package's IO-system, that is not possible as far as I know. The flag you need to pass CreateFile (api call which is used to open practically all files) is FILE_SHARE_READ.
You can find these in Win32-package, but files opened via raw api bindings don't work well together with base-packages IO-system (ie, you need to read and write using rawish api calls.)
as usual, Streams library may be used to solve this problem, although this will need some additional programming. please write me if win32read/win32write API is inappropriate dor your needs -- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com

Hi
So far the windows API seems to work for me. Currently I'm still struggling
to not
write garbage to the file but the shared access works now. Does anyone have
an
example how to use it (e.g. the implementation of hPutStr on windows or
something,
i did not find it in the ghc source code)?
I tried to use Streams before but without the windows API.
regards
Stefan
2006/10/11, Bulat Ziganshin
Hello Esa,
Wednesday, October 11, 2006, 2:13:49 PM, you wrote:
Using base-package's IO-system, that is not possible as far as I know. The flag you need to pass CreateFile (api call which is used to open practically all files) is FILE_SHARE_READ.
You can find these in Win32-package, but files opened via raw api bindings don't work well together with base-packages IO-system (ie, you need to read and write using rawish api calls.)
as usual, Streams library may be used to solve this problem, although this will need some additional programming. please write me if win32read/win32write API is inappropriate dor your needs
-- Best regards, Bulat mailto:Bulat.Ziganshin@gmail.com
participants (4)
-
Bulat Ziganshin
-
Esa Ilari Vuokko
-
Krasimir Angelov
-
Stefan Aeschbacher