Environment variable does not work (especially DARCS_EDITOR)

Simon Marlow simonmar at microsoft.com
Fri Apr 22 03:55:03 EDT 2005


On 21 April 2005 17:57, Glynn Clements wrote:

> Simon Marlow wrote:
> 
>>> The test program works after applying the following patch to GHC
>>> that disables nonblocking mode after the fork and before the exec.
> 
>> If we did this, we would also need to re-enable non-blocking mode
>> after the rawSystem completes.  Also, this doesn't work well if
>> runProcess is used and the Haskell program continues to run while
>> the subprocess is executing, because the O_NONBLOCK flag is shared
>> between parent and child.
> 
> Presumably the Haskell program won't like it very much if the spawned
> program disables O_NONBLOCK itself?
> 
> Is there a reason (other than performance) why the use of O_NONBLOCK
> can't be replaced with calling select/poll before accessing the
> descriptor?

That would work, as long as the current process is the only user of that
file descriptor: otherwise there's a race condition between the select()
and the read().

This is really a Unix design blunder, there ought to be a non-blocking
version of read().

> Is non-blocking I/O only necessary if you need explicit concurrency?
> Or do the runtime or critical libraries require it?

Right, it's only important if you need concurrency.

Cheers,
	Simon


More information about the Libraries mailing list