Skip to content
This repository has been archived by the owner. It is now read-only.
Permalink
Browse files

api: change the spawn api to allow using existing streams for stdio

  • Loading branch information...
piscisaureus committed May 31, 2012
1 parent aecddfe commit 44c72a981b6f5ebed6ac26a6512789f2c21f72ae
Showing with 13 additions and 11 deletions.
  1. +10 −8 include/uv.h
  2. +1 −1 src/unix/process.c
  3. +1 −1 src/win/process.c
  4. +1 −1 test/test-spawn.c
@@ -1165,15 +1165,17 @@ UV_EXTERN void uv_freeaddrinfo(struct addrinfo* ai);

/* uv_spawn() options */
typedef enum {
UV_IGNORE = 0x00,
UV_CREATE_PIPE = 0x01,
/*
* UV_READABLE_PIPE and UV_WRITABLE_PIPE flags are set from
* the child process perspective.
UV_IGNORE = 0x00,
UV_CREATE_PIPE = 0x01,
UV_INHERIT_FD = 0x02,
UV_INHERIT_STREAM = 0x04,

/* When UV_CREATE_PIPE is specified, UV_READABLE_PIPE and UV_WRITABLE_PIPE
* determine the direction of flow, from the child process' perspective. Both
* flags may be specified to create a duplex data stream.
*/
UV_READABLE_PIPE = 0x02,
UV_WRITABLE_PIPE = 0x04,
UV_RAW_FD = 0x08
UV_READABLE_PIPE = 0x10,
UV_WRITABLE_PIPE = 0x20,
} uv_stdio_flags;

typedef struct uv_stdio_container_s {
@@ -151,7 +151,7 @@ static int uv__process_init_stdio(uv_stdio_container_t* container, int fds[2],
}

return uv__make_socketpair(fds, 0);
} else if (container->flags & UV_RAW_FD) {
} else if (container->flags & UV_INHERIT_FD) {
if (container->data.fd == -1) {
errno = EINVAL;
return -1;
@@ -945,7 +945,7 @@ int uv_spawn(uv_loop_t* loop, uv_process_t* process,
continue;
}

if (options.stdio[i].flags & UV_RAW_FD) {
if (options.stdio[i].flags & UV_INHERIT_FD) {
err = duplicate_fd(loop, options.stdio[i].data.fd, &child_stdio[i]);
} else if (options.stdio[i].data.stream->type == UV_NAMED_PIPE) {
pipe = (uv_pipe_t*)options.stdio[i].data.stream;
@@ -217,7 +217,7 @@ TEST_IMPL(spawn_stdout_to_file) {

options.stdio = stdio;
options.stdio[0].flags = UV_IGNORE;
options.stdio[1].flags = UV_RAW_FD;
options.stdio[1].flags = UV_INHERIT_FD;
options.stdio[1].data.fd = file;
options.stdio_count = 2;

0 comments on commit 44c72a9

Please sign in to comment.
You can’t perform that action at this time.