Forum: CFEngine Help
Subject: Re: Starting cf-execd from inittab
Author: aleksey_c
Link to topic: https://cfengine.com/forum/read.php?3,27509,27513#msg-27513

Just looked at the source code of cfengine-3.3.5\src\cf-execd.c

When starting cf-execd with --nofork or -F option ONCE flag is set to true

        case 'F':
            ONCE = true;
            NO_FORK = true;
            break;


So, cf-execd does not start an infinite loop and exit after every execution.

    if (ONCE)
    {
        CfOut(cf_verbose, "", "Sleeping for splaytime %d seconds\n\n", 
SPLAYTIME);
        sleep(SPLAYTIME);
        LocalExec(&config);
        CloseLog();
    }
    else
    {
        while (true)
        {
            if (ScheduleRun())
            {
                CfOut(cf_verbose, "", "Sleeping for splaytime %d seconds\n\n", 
SPLAYTIME);
                sleep(SPLAYTIME);

#if defined(HAVE_PTHREAD)
                if (!LocalExecInThread(&config))
                {
                    CfOut(cf_inform, "", "Unable to run agent in thread, 
falling back to blocking execution");
#endif
                    LocalExec(&config);
#if defined(HAVE_PTHREAD)
                }
#endif
            }
        }
    }


Of course init restarts the process but it is disrupts the normal cycle of the 
program. Therefore at the moment it is not possible to use init respawn :( 
Seems like it is possible to make small changes to the code of cf-execd.c to 
support running from init. For example, separate option --once or -O.

Can I request a feature?

_______________________________________________
Help-cfengine mailing list
Help-cfengine@cfengine.org
https://cfengine.org/mailman/listinfo/help-cfengine

Reply via email to