Logo ProcessKit API Reference

SoftSignalDelivery Type

The fate of a graceful teardown's best-effort **soft-signal** tier — what actually happened to the polite "please exit" request `ProcessGroup.ShutdownReportAsync` issues before the grace window, as opposed to what it *tried* to do. The soft signal is the group's configured `Options.StopSignal` (`Signal.Term` by default) on the Unix mechanisms, and a best-effort `WM_CLOSE` on the Windows soft tier. It is deliberately **not** the hard kill: escalation to `SIGKILL` / the atomic Job terminate is reported separately, by `ShutdownReport.Escalated`.

Union cases

Union case Description

Failed Signal

Full Usage: Failed Signal

Parameters:

A soft-signal tier exists but the best-effort delivery **failed for every target this teardown could still reach**: a uid-changed (`sudo`/setuid) member that rejected the signal with `EPERM` on Unix. Carries the `Signal` that could not be delivered. The teardown proceeded to its grace/escalation regardless. **Precision differs by mechanism.** On the POSIX process-group mechanism this is exact: `Failed` fires only when NONE of the live tracked group leaders (or adopted processes) accepted the signal — a partial failure among several still-reachable members is reported `Sent`, since the soft phase genuinely reached at least one of them. On the Linux cgroup v2 mechanism the underlying broadcast stops describing itself as soon as it hits its first genuine per-member failure, even while other members of the same cgroup went on to receive the signal — so there `Failed` means "at least one member's delivery failed," which is a narrower guarantee than the POSIX process-group mechanism's "every" reading. Windows never produces `Failed` at all (see `Unsupported`).

Signal : Signal

Sent Signal

Full Usage: Sent Signal

Parameters:

The soft signal was delivered best-effort to the tree: a POSIX signal on the Unix mechanisms, or a `WM_CLOSE` that reached at least one live windowed member on the Windows soft tier. Carries the `Signal` attempted. "Best-effort" is exact: a member that ignores the signal and keeps running is still counted as *sent to* — whether the tree then drained within the grace is `ShutdownReport.DrainedWithinGrace`, not this.

Signal : Signal

Unsupported

Full Usage: Unsupported

This platform has **no soft-signal tier** for the group, so the teardown could only hard-kill — there was nothing polite to send. The one case: a windowless Windows Job Object with no live member that owns a top-level window. Every Unix mechanism always has a real soft-signal tier (`SIGTERM`), so this never arises there.

Instance members

Instance member Description

this.AttemptedSignal

Full Usage: this.AttemptedSignal

Returns: Signal option

The soft `Signal` this fate concerns — `Some` for both `Sent` and `Failed`, `None` for `Unsupported`, where nothing soft could be sent at all.

Returns: Signal option

this.IsFailed

Full Usage: this.IsFailed

Returns: bool
Returns: bool

this.IsSent

Full Usage: this.IsSent

Returns: bool
Returns: bool

this.IsUnsupported

Full Usage: this.IsUnsupported

Returns: bool
Returns: bool

Type something to start searching.