Esempio n. 1
0
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
Esempio n. 2
0
void
daemon_t::run(
) {
    if ( _args.daemonize ) {
        DLOG( "daemonizing..." );
        _parent();
    } else {
        DLOG( "running in foreground..." );
        _init();
        _body();
    }; // if
}; // run
Esempio n. 3
0
 void operator ()(int i) const
 {
     _body(Range(i, i + 1));
 }