KSQL_ALLOC_CHILD(3) Library Functions Manual KSQL_ALLOC_CHILD(3)

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)
May 7, 2018 OpenBSD 6.4