pub struct UnixProcess { /* private fields */ }Expand description
A spawned Unix process and its supporting tasks.
UnixProcess owns the child process plus background tasks that pump stdout/stderr lines
into a shared sink and observe the child’s exit. The provided exit token is cancelled when
the child process exits on its own (observed by the background watcher) or when
cleanup is called. The exit code is recorded in the shared
ExitCodeCell returned by exit_code_cell.
The spawned process is always made the leader of a new process group, so
cleanup can signal the entire group (parent plus any forked helpers).
This matters for binaries like the Datadog Core Agent that spawn trace-agent /
process-agent which would otherwise orphan onto the init/launchd system supervisor when
only the parent is killed.
Implementations§
Source§impl UnixProcess
impl UnixProcess
Sourcepub async fn spawn(
config: UnixProcessConfig,
log_sink: Arc<Mutex<dyn LogSink>>,
exit_token: CancellationToken,
) -> Result<Self, GenericError>
pub async fn spawn( config: UnixProcessConfig, log_sink: Arc<Mutex<dyn LogSink>>, exit_token: CancellationToken, ) -> Result<Self, GenericError>
Spawns the process described by config. The provided log_sink receives each line of
captured stdout/stderr; the provided exit_token is cancelled when the process exits.
Sourcepub fn exit_code_cell(&self) -> ExitCodeCell
pub fn exit_code_cell(&self) -> ExitCodeCell
Returns a clone of the shared exit-code cell. The cell is populated once the process
exits (either on its own or via cleanup). Consumers should wait on the exit token they
passed to spawn before reading.
Sourcepub async fn cleanup(self)
pub async fn cleanup(self)
Kills the spawned process group, joins background tasks, and cancels the exit token.
Sends SIGTERM to the whole group, waits a short grace period, then sends SIGKILL to
guarantee nothing is left behind. The grace period gives well-behaved descendants
(for example, the Core Agent’s trace-agent / process-agent helpers) a chance to
shut down cleanly before we hard-kill them.