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
|
|
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`).
|
|
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.
|
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
|
|
The soft `Signal` this fate concerns — `Some` for both `Sent` and `Failed`, `None` for `Unsupported`, where nothing soft could be sent at all.
|
Full Usage:
this.IsFailed
Returns: bool
|
|
Full Usage:
this.IsSent
Returns: bool
|
|
Full Usage:
this.IsUnsupported
Returns: bool
|
|
ProcessKit API Reference