fn kill_process_group(child: &Child, signal: c_int, signal_name: &str)Expand description
Send signal to an entire process group in one shot (negated pid — see
the two public wrappers below for why this targets a whole group, not
just one process). Shared by both so the return-value handling — a
silently-ignored failure would otherwise let a genuinely-failed kill
(anything but the expected “already empty” ESRCH) read as a successful
teardown — lives in exactly one place. Logs on any failure OTHER than
ESRCH (the routine no-op case: the group was already empty, e.g. a prior
SIGTERM’s own graceful shutdown already reaped it).