
On 02/20/2005 10:35 PM, Dan Nuffer wrote: [snip]
Having dealt with running processes quite a lot, I'd say one of the most important features is providing a method of dealing with "misbehaving" processes. This may not seem obvious at first, but I learned this lesson the hard way several years ago. IMO, to be useful the library must provide a recovery mechanism for the case where a child process locks up and never produces any output or enters an infinite loop and never stops producing output.
By "locks up" did you mean deadlock as one instance of this. If so, would a descriptor_lock like that descibed here: http://groups-beta.google.com/group/comp.lang.c++.moderated/msg/c4c3bf55960e... be useful for recovery? What I had in mind was a table in each thread local storage which contains blocked locks with requested and acquired resouces. This could be used to detect cycles, and hence deadlocks.