IComposeEngine over the docker compose CLI. Argv construction and output
parsing are pure; the process runs through an injected exec with
hive-system's shell.core/exec! contract (argv, opts) -> Result.
IComposeEngine over the docker compose CLI. Argv construction and output parsing are pure; the process runs through an injected `exec` with hive-system's `shell.core/exec!` contract (argv, opts) -> Result.
IProgramRunner over the host: processes through hive-system (process.core
spawns, process.liveness answers for a pid, shell.core/exec! signals),
build files through EDN reads.
A program starts as sh -c 'exec setsid <command> >> <log> 2>&1': the shell
replaces itself with the program in a session of its own, so the spawned pid
is the program's and its process group's. The group is what -stop!
signals, which reaches the JVMs and node processes a watch forks. The pid is
all that is kept, so a program outlives the addon and is stopped by pid after
a restart.
IProgramRunner over the host: processes through hive-system (`process.core` spawns, `process.liveness` answers for a pid, `shell.core/exec!` signals), build files through EDN reads. A program starts as `sh -c 'exec setsid <command> >> <log> 2>&1'`: the shell replaces itself with the program in a session of its own, so the spawned pid is the program's and its process group's. The group is what `-stop!` signals, which reaches the JVMs and node processes a watch forks. The pid is all that is kept, so a program outlives the addon and is stopped by pid after a restart.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |