Reference

sg_snapshot(3)

initialise libstatgrab

NAME

sg_init, sg_snapshot, sg_shutdown, sg_drop_privileges - initialise libstatgrab

SYNOPSIS

FC#include <statgrab.h>F[0]

FCvoid sg_log_initF[0] FC(const char *properties_pfx, const char *env_name, const char *argv0);F[0]

FCsg_error sg_initF[0] FC(int ignore_init_errors);F[0]

FCsg_error sg_snapshotF[0] FC(void);F[0]

FCsg_error sg_shutdownF[0] FC(void);F[0]

FCsg_error sg_drop_privilegesF[0] FC(void);F[0]

DESCRIPTION

FCsg_initF[0]() either initialises the statgrab library and sets the initialisation counter to 1, if not already done, or increases the initialisation counter. If called for the first time (in fact: if called when the initialisation counter is 0), the constructor (initialisation routine) of each registered component is invoked, some global variables are initialised, requested mutual exclusion semaphores are initialised and so on. FCsg_initF[0]() is protected by the mutex named "statgrab".

FCsg_log_initF[0]() allows some application-individual logging configuration. It's intended for projects with several applications or commands which might have different appenders. Mind that FCsg_log_initF[0] must be called before FCsg_initF[0], but after your application initialized logging framework.

FCsg_snapshotF[0]() is Win32 only and will probably disappear.

FCsg_shutdownF[0]() decrements the initialisation counter. If the counter reaches zero, components' destructors are called, mutual exclusion semaphores (except "statgrab") are destroyed etc. FCsg_shutdownF[0]() is protected by the mutex named "statgrab".

FCsg_drop_privilegesF[0]() drops elevated privileges.

RETURN VALUES

All functions return a statgrab error code. Either SG_ERROR_NONE when everything was ok or the appropriate error code from an constructor/destructor.

EXAMPLE

Typical initialization/deinitialization sequence when using with log4cplus:

FC
static void *l4cplus_initializer;
static void
cleanup_logging(void)
{
       log4cplus_deinitialize(l4cplus_initializer);
}
int
main(int argc, char const *argv[])
{
    l4cplus_initializer = log4cplus_initialize();
    atexit((void (*)(void))cleanup_logging);
    sg_log_init("saidar", "SAIDAR_LOG_PROPERTIES", argv[0]);
    sg_init(1);
    if(sg_drop_privileges() != 0) {
	die("Failed to drop setuid/setgid privileges");
    }
    do_something();
    sg_shutdown();
    return 0;
}
      F[0]

SEE ALSO

statgrab(3)

WEBSITE

⟨https://libstatgrab.org/⟩

History