
Hi Johannes: I had a similar question a few years back using the async library and in particular the 'race' function. I got a nice answer on StackOverflow: https://stackoverflow.com/questions/24446154/control-concurrent-async-race-a... I think you can use the ideas in there. Bottom line: You can use a combination of 'onException' and 'terminateProcess' and let your spawned processes clean-up after themselves properly. Cheers, -Levent. On Tue, Jul 24, 2018 at 6: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#v:readProcess 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.html 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.