KSQL_ALLOC_CHILD(3)

NAME
ksql_alloc_child - allocate a ksql database handle in split-process mode

LIBRARY
ksql

SYNOPSIS
#include <sys/types.h>
#include <stdint.h>
#include <ksql.h>
struct ksql *
ksql_alloc_child(const struct ksqlcfg *cfg, void (*onfork)(void *arg), void *arg);

DESCRIPTION
The ksql_alloc_child function creates a SQLite database handle. It must be matched by a call to ksql_free(3) unless KSQL_SAFE_EXIT is specified, in which case it will be freed on exit. (It is still good practice to manually free.) It is usually followed by ksql_open(3).

The ksql_alloc_child function differs from ksql_alloc(3) in that the database is opened in a child process instead of within the current process, with all database queries running over a communication socket. This way, the caller can safely sandbox after the function returns.

If cfg is NULL, a configuration from ksql_cfg_defaults(3) is used.

The onfork function, if specified, is invoked by the child after a successful fork(2) with the arg variable. The process environment within which onfork is invoked is prior to its being sandboxed.

RETURN VALUES
This returns the allocated database handle or NULL if an error occurs.

SEE ALSO
ksql_cfg_defaults(3), ksql_free(3)