Skip to main content

Module process

Module process 

Source
Expand description

The process adapter: the obligations a wrapper owes its child.

Both output pipes are drained concurrently while stdin is being written, because filling a pipe buffer while the child blocks on stdin is a deadlock. The environment is constructed by the caller and applied over env_clear. A child killed by signal N surfaces as 128+N, so an interrupted setup dies the way an operator expects. Interruption reaches the child through the shared process group — a terminal’s SIGINT is delivered to parent and child alike — and this adapter installs no handler of its own: forwarding a signal aimed at rk alone would need a raw kill(2), which the crate-wide unsafe_code = "forbid" rules out. Chunks reach the caller in arrival order, raw; redaction is the caller’s job, because only the caller knows the secrets of the run.

Structs§

Exec
One spawn request, fully constructed before anything runs.
Outcome
What a finished child left behind.

Functions§

redact
Replace every occurrence of each secret in chunk with [redacted].
run
Run a child to completion, draining both pipes concurrently and calling on_chunk for every chunk in arrival order.