Is there any appetite for providing a way for ./run to know the PID of its parent s6-supervise instance?

This information allows the supervised child to know that it has been orphaned, and to tie its fate to its parent (eg PDEATHSIG https://stackoverflow.com/a/36945270).

Using getppid(2) alone is not reliable because the child might have been orphaned between the fork(2) and getppid(2) calls.

Mechanisms that might be used include a) setting an environment variable (eg S6_PPID) before executing ./run, or b) passing the PID as an argument when executing ./run.

The environment variable approach can be used when s6-supervise is deployed in standalone settings (eg exec env S6_PPID=$$ s6-supervise servicedir), but this approach not presently a good fit in s6-svscan scenarios.

Earl

Reply via email to