ksql_alloc_child
—
allocate a ksql database handle in split-process
mode
library “ksql”
#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);
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.
This returns the allocated database handle or
NULL
if an error occurs.
ksql_cfg_defaults(3),
ksql_free(3)