-
This is a generalisation of the SIGINT-ignoring that system and rawSystem do, to allow it to be used via the general createProcess. For the gory details of SIGINT handling, see http://www.cons.org/cracauer/sigint.html We implement the 'WCE' method described there. That important feature was only available to system and rawSystem (mirroring the C system() behaviour). These functions are very limited and indeed deprecated, so we need this feature in general. In particular projects like Cabal are suffering because they cannot do this properly (or need horrible workarounds copy and pasting much of System.Process and using System.Process.Internals). The feature is available now via a new delegate_ctlc flag in the CreateProcess options record. The use of signal handlers is still a little hairy, but probably better than before (for situations where there were multiple concurrent calls to system/rawSystem). One thing to note is that waitForProcess and getProcessExitCode can now throw the UserInterrupt exception. This is all documented in the haddock docs (both a short description and also the excruciating details). Authored-by: Duncan Coutts <duncan@well-typed.com> Signed-off-by: Herbert Valerio Riedel <hvr@gnu.org>
a0467f3e