Quoth Deniz Dogan <deniz.a.m.do...@gmail.com>, > I have a small program which spawns a subprocess. However, when I hit > C-c, the subprocess won't die, instead it will just keep running until > it's done or until I kill it. I've looked around in System.Process for > something suitable for my needs, but I can't seem to find it. Any > ideas?
What you want, is the normal behavior for Berkeley/UNIX/POSIX ttys: signals generated by the (pseudo)tty handler from control characters are delivered to all processes in the foreground process group, which is a hereditary distinction where you have to actively opt out. Berkeley job control shells (bash, ksh et al.) reset process group on commands issuing from the terminal, so the foreground process group is whatever you invoked, and any subprocesses thereof (barring further process group resets), and that's what will abort if you press ctrl-C. If it isn't working that way, possibilities might include: - not a POSIX operating system - subprocess set its process group and is no longer in the terminal foreground process group. - a signal handler caught/ignored ctrl-C. Along with process group stuff in System.Process, if both processes are Haskell you might look at System.Posix.Terminal getTerminalProcessGroupID, as a way to directly check the second item above (and I suppose indirectly the first.) Unfortunately, none of these explanations come with any suggested remedy - they're just three ways to say "platform [OS or Haskell implementation] doesn't support POSIX ttys". Donn _______________________________________________ Haskell-Cafe mailing list Haskell-Cafe@haskell.org http://www.haskell.org/mailman/listinfo/haskell-cafe