Skip to main content

UnixProcess

Struct UnixProcess 

Source
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

Source

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.

Source

pub fn name(&self) -> &str

Returns the display name of the process.

Source

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.

Source

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.

Trait Implementations§

Source§

impl Drop for UnixProcess

Source§

fn drop(&mut self)

Executes the destructor for this type. Read more
Source§

fn pin_drop(self: Pin<&mut Self>)

🔬This is a nightly-only experimental API. (pin_ergonomics)
Execute the destructor for this type, but different to Drop::drop, it requires self to be pinned. Read more

Auto Trait Implementations§

Blanket Implementations§

Source§

impl<T> Any for T
where T: 'static + ?Sized,

Source§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
Source§

impl<T> Borrow<T> for T
where T: ?Sized,

Source§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
Source§

impl<T> BorrowMut<T> for T
where T: ?Sized,

Source§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
Source§

impl<T> From<T> for T

Source§

fn from(t: T) -> T

Returns the argument unchanged.

Source§

impl<T> Instrument for T

Source§

fn instrument(self, span: Span) -> Instrumented<Self>

Instruments this type with the provided Span, returning an Instrumented wrapper. Read more
Source§

fn in_current_span(self) -> Instrumented<Self>

Instruments this type with the current Span, returning an Instrumented wrapper. Read more
Source§

impl<T, U> Into<U> for T
where U: From<T>,

Source§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of From<T> for U chooses to do.

Source§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

Source§

type Error = Infallible

The type returned in the event of a conversion error.
Source§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
Source§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

Source§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
Source§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.
Source§

impl<T> WithSubscriber for T

Source§

fn with_subscriber<S>(self, subscriber: S) -> WithDispatch<Self>
where S: Into<Dispatch>,

Attaches the provided Subscriber to this type, returning a WithDispatch wrapper. Read more
Source§

fn with_current_subscriber(self) -> WithDispatch<Self>

Attaches the current default Subscriber to this type, returning a WithDispatch wrapper. Read more