Silk

silk/native_process

Profiles: aarch64-apple-darwin, aarch64-unknown-linux-gnu, x86_64-unknown-linux-gnu.

Source-owned native process resources and per-invocation capture policy.

Details

Each invocation owns its descriptors, staged request bytes and child. Recoverable failures release descriptors and resolve the child before propagating the original error.

Gotchas

Foreign calls are blocking. Fatal traps do not promise cleanup or child termination.

Import as NativeProcess with import silk.native_process { NativeProcess }.

Public declarations: 1.

NativeProcess

pub struct NativeProcess

Blocking native process execution with per-call owned resources and captures.

Associated function NativeProcess.execute

pub effect<'life0> fn execute<'life0>(request: &'life0 silk/child_process.ProcessRequest) -> ProcessOutcome ! ProcessError | OutOfMemoryError ? &mut Allocator

Stages a request, starts its child and captures both streams to completion.

Details

Arguments and environment are NUL-separated byte entries. Program and cwd contain no NUL; an empty cwd preserves the parent directory. The child receives EOF on stdin. Startup errors are distinct from nonzero exits and signals. Every returned capture owns its bytes.

Gotchas

Calls block. Recoverable failure after spawning terminates and reaps the owned child before propagation. Fatal traps have no cleanup promise. The host must not reap this owned child.

On this page