Reaper

Struct Reaper 

Source
pub(crate) struct Reaper {
    pub(crate) sys: Reaper,
    pub(crate) drivers: AtomicUsize,
    pub(crate) child_count: AtomicUsize,
}
Expand description

The zombie process reaper.

This structure reaps zombie processes and emits the SIGCHLD signal.

Fields§

§sys: Reaper

Underlying system reaper.

§drivers: AtomicUsize

The number of tasks polling the SIGCHLD event.

If this is zero, the async-process thread must be spawned.

§child_count: AtomicUsize

Number of live Child instances currently running.

This is used to prevent the reaper thread from being spawned right as the program closes, when the reaper thread isn’t needed. This represents the number of active processes.

Implementations§

Source§

impl Reaper

Source

pub(crate) fn get() -> &'static Self

Get the singleton instance of the reaper.

Source

pub(crate) fn ensure_driven(&'static self)

Ensure that the reaper is driven.

If there are no active driver() callers, this will spawn the async-process thread.

Source

pub(crate) fn start_driver_thread(&'static self)

Start the async-process thread.

Source

pub(crate) fn register(&'static self, child: Child) -> Result<ChildGuard>

Register a process with this reaper.

Auto Trait Implementations§

§

impl !Freeze for Reaper

§

impl !RefUnwindSafe for Reaper

§

impl Send for Reaper

§

impl Sync for Reaper

§

impl !Unpin for Reaper

§

impl UnwindSafe for Reaper

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, 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.