[Haskell-cafe] File I/O question

Jules Bean jules at jellybean.co.uk
Thu Mar 13 07:08:41 EDT 2008


Andrew Coppin wrote:
> Don Stewart wrote:
>> Hey Andrew,
>>
>> What are you trying to do? Read and write to the same file (if so, you
>> need to use strict IO), or are you trying something sneakier?
>>   
> 
> I have a long-running Haskell program that writes status information to 
> a log file. I'd like to be able to open and read that log file before 
> the program has actually terminated. I have a similar program written in 
> Tcl that allows me to do this, since apparently the Tcl interpretter 
> doesn't lock output files for exclusive access. Haskell, however, does. 
> (This seems to be the stipulated behaviour as per the Report.) If 
> there's an easy way to change this, it would be useful...

AIUI, and I could be wrong:

The haskell report mandates locking. On win32, this locking is 
implemented using win32 (mandatory) locking primitives, and thus it 
affects other processes. On unix, this locking is implementing using an 
advisory/optional locking system which is only noticed by other haskell 
threads. (On many versions of unix, at least historically, there was no 
mandatory locking; mandatory locking is an anathema to unix programmers)

Thus, the problem you have is win32 specific and requires access to the 
Win32 primitive to resolve, as I understand it. There are probably 
primitives in Win32 packages for this?

Or you could use appendfile instead,

Jules


More information about the Haskell-Cafe mailing list