
The trick here is to set the option that creates a process group (System.Process's config record has a field for this), then extract the process id of the parent and negate it to get a process group ID. A signal sent to that will go to the entire process group. You can do this with System.Process as opposed to System.Posix.Process, but you need to go digging into internals to get the process ID IIRC. On Tue, Jul 24, 2018 at 9:42 AM Johannes Waldmann < johannes.waldmann@htwk-leipzig.de> wrote:
Dear Cafe,
I am using
https://hackage.haskell.org/package/process-1.6.4.0/docs/System-Process.html... to start an external command, and wait for its completion.
Now I would like to time-out this after a while. I can use https://hackage.haskell.org/package/base-4.11.1.0/docs/System-Timeout.html and this works in simple cases -
but not in case the external command has spawned child processes. (cleanupProcess sends SIGTERM but only to the process at the top of the tree ?)
I guess I need to use
https://hackage.haskell.org/package/unix-2.7.2.2/docs/System-Posix-Process.h... but that seems rather low-level - and I don't see how I would get the ProcessID of the process started by readProcess, so I'd also have to re-do that.
Is there an abstraction/library that would help here?
Thanks - J.W. _______________________________________________ Haskell-Cafe mailing list To (un)subscribe, modify options or view archives go to: http://mail.haskell.org/cgi-bin/mailman/listinfo/haskell-cafe Only members subscribed via the mailman list are allowed to post.
-- brandon s allbery kf8nh sine nomine associates allbery.b@gmail.com ballbery@sinenomine.net unix, openafs, kerberos, infrastructure, xmonad http://sinenomine.net