Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
spawn/IO: supercharge the API (#30278)
- Permit IOBuffer as an input/output, and automatically create a Pipe to feed to/from it. - Improved handling for using CmdRedirect on fd >= 3 - Allow any number of stdio handles to be passed to the child (including zero), not just precisely 0-2 - Clearer ownership expectations (less code duplication) in `_spawn` calls, ensuring we always call `setup_stdio` early and exactly once - Stop capturing all IO handles in Process.in/.out/.err Since usually we only have the child side of the handle at the point we were trying to set this, while we want this to be the parent handle. Instead, we now handle this at the caller level in the `open` method, which has better information and intent given for this. (To preserve the old behavior, we also include the old heuristic in `run` for setting these handles.) - Ensure that most of the code won't need to be specialized on every (stdin, stdout, stderr) tuple combination that gets used - Implement `open(::OS_HANDLE)` for taking ownership of a raw `fd` handle, and the corresponding constructors `PipeEndpoint(::OS_HANDLE)` and `TCP(::OS_HANDLE)` (such as may now be passed via CmdRedirect).
- Loading branch information