Interactive processes kill the process and its children on Ctrl+C. #13678
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
As described in #12603, an interactive process which spawns children will currently orphan those children when it is killed. Despite spawning processes with
daemon=True
, the example in the description works when run directly as a PEX because the shell interrupts all processes in the parent's process group.To get to a place where everything is terminated (even if not yet as gracefully as we would like: see #13230), this change wraps interactive processes in a new
ManagedChild
wrapper, which helps to ensure that the root process is in a new PGID, and then kills that PGID on drop.If this strategy proves to be useful, we can extend it to
nailgun
servers and local processes, but this is kept intentionally small for cherry-picking.[ci skip-build-wheels]