
On Sat, 11 Sep 2010 00:02:38 +0200, Jeremy Maitin-Shepard <jeremy@jeremyms.com> wrote:
[...]implementing the communication. (Probably it would make sense to implement signal handling support as a general asio facility.)
There is a Boost.Asio extension for signal handling in Trac: <https://svn.boost.org/trac/boost/ticket/2879> Actually there are two extensions. While mine follows Boost.Asio patterns more closely I remember that Dmitry pointed out some issues with the current implementation (see <http://thread.gmane.org/gmane.comp.lib.boost.devel/201581/focus=201923>). The main problem with his solution is that it doesn't support synchronous wait operations. Apart from that his implementation seems to be more lightweight. As I didn't look into the issues yet Dmitry had mentioned I wouldn't recommend anyone to use my Boost.Asio extension currently.
There is, of course, the general problem that setting a signal handler involves changing the global program state, and so it needs to be coordinated to some extent with the rest of the program. At the low
Exactly! As there also can be only one signal handler while you can have multiple Boost.Asio I/O service objects and I/O objects it gets even more complicated. As we felt it's more difficult to use libraries from different sources in one application when they all depend on SIGCHLD we went with wait(). You still need to coordinate. But this is something which we hope is easier to handle than libraries which steal signal handlers from each other. Boris
[...]