[Haskell-cafe] Re: Bug in runInteractiveProcess?

John Goerzen jgoerzen at complete.org
Tue Oct 16 17:58:08 EDT 2007

On 2007-10-16, Jules Bean <jules at jellybean.co.uk> wrote:
> John Goerzen wrote:
>> Many systems will just try to close *all* FDs except the ones they need
>> after a fork().  Another approach would be to maintain a global list of
>> FDs that the Haskell thread is using, and close all of them except the
>> pipe ends in the child.
>> Does this make sense to everyone?  If so, I'll submit the bug on GHC.
> Yes, it does make sense.
> On POSIX systems it should suffice to just have haskell set 
> CLOSE_ON_EXEC on all its fds except std{in,out,err} and special pipe 
> fds, shouldn't it?

Do you mean FD_CLOEXEC, which can be set with fcntl()?  If so, it's not
defined in POSIX according to the Linux manpage.  I couldn't find
CLOSE_ON_EXEC in either open(2) or fcntl(2).

If FD_CLOEXEC is set in the Haskell process atomically, before anything
has a chance to fork off and use it, this would be an ideal solution on
platforms that support it.

-- John

More information about the Haskell-Cafe mailing list