Thu, 26 Jul 2001 18:00:30 +0100
> Is there a way in Glasgow Haskell to get a thread to wait on=20
> a child process
> in the same way as the Posix function wait(), and get the=20
> termination status
> of the child? If so, how?
There's a couple of ways. The obvious way is to get the thread to place
its result in an MVar when it exits: there's a guarantee that a thread
always either exits or raises an exception, so you can wrap the
top-level computation in something that places the result/exception in
Alternatively, you can foreign import rts_evalIO() and do it that way.
It ought to work, but I haven't tried it. This way lets you get at the
Interrupted or Deadlocked return states too, which you can't do solely
Hmm, now I think about it, the compiler won't let you foreign import
rts_evalIO() with the type you want, namely a -> Ptr b -> IO CInt, and
quite rightly so. You'll need a version of rts_evalIO() that takes