Skip to content

Commit

Permalink
spawn: supercharge the API
Browse files Browse the repository at this point in the history
- 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 have been passed via CmdRedirect).
  • Loading branch information
vtjnash committed Dec 5, 2018
1 parent 6175bd9 commit 58c02e2
Show file tree
Hide file tree
Showing 7 changed files with 352 additions and 230 deletions.
Loading

0 comments on commit 58c02e2

Please sign in to comment.