void daemon_t::_grandchild( pipe_t & c_pipe, pipe_t & g_pipe ) { try { c_pipe.writer().close(); _init(); // Initialization finished successfully -- let parent know everything is ok. g_pipe.writer().write( ok ); g_pipe.writer().close(); } catch ( std::exception const & ex ) { g_pipe.writer().write( string_t( ex.what() ) + "\n" ); throw; } catch ( ... ) { g_pipe.writer().write( "Unknown exception occurred\n" ); throw; }; // try _body(); }; // _grandchild
void daemon_t::run( ) { if ( _args.daemonize ) { DLOG( "daemonizing..." ); _parent(); } else { DLOG( "running in foreground..." ); _init(); _body(); }; // if }; // run
void operator ()(int i) const { _body(Range(i, i + 1)); }