diff options
author | Saúl Ibarra Corretgé <saghul@gmail.com> | 2017-04-25 08:27:52 +0200 |
---|---|---|
committer | Saúl Ibarra Corretgé <saghul@gmail.com> | 2017-04-28 11:16:15 +0200 |
commit | d59d6e6f22b4c11c37e34843d111a748df73bda2 (patch) | |
tree | f2a46fbfb3e308b3f474d086b122f4b591a78bcc /docs/code/proc-streams/main.c | |
parent | 2ce5734d76a8bfbf01af4a4854edf1e3cc42e029 (diff) | |
download | libuv-d59d6e6f22b4c11c37e34843d111a748df73bda2.tar.gz libuv-d59d6e6f22b4c11c37e34843d111a748df73bda2.zip |
doc: add code samples from uvbook (unadapted)
PR-URL: https://github.com/libuv/libuv/pull/1246
Reviewed-By: Colin Ihrig <cjihrig@gmail.com>
Reviewed-By: Santiago Gimeno <santiago.gimeno@gmail.com>
Diffstat (limited to 'docs/code/proc-streams/main.c')
-rw-r--r-- | docs/code/proc-streams/main.c | 49 |
1 files changed, 49 insertions, 0 deletions
diff --git a/docs/code/proc-streams/main.c b/docs/code/proc-streams/main.c new file mode 100644 index 00000000..b8a65212 --- /dev/null +++ b/docs/code/proc-streams/main.c @@ -0,0 +1,49 @@ +#include <stdio.h> +#include <string.h> +#include <inttypes.h> + +#include <uv.h> + +uv_loop_t *loop; +uv_process_t child_req; +uv_process_options_t options; + +void on_exit(uv_process_t *req, int64_t exit_status, int term_signal) { + fprintf(stderr, "Process exited with status %" PRId64 ", signal %d\n", exit_status, term_signal); + uv_close((uv_handle_t*) req, NULL); +} + +int main() { + loop = uv_default_loop(); + + size_t size = 500; + char path[size]; + uv_exepath(path, &size); + strcpy(path + (strlen(path) - strlen("proc-streams")), "test"); + + char* args[2]; + args[0] = path; + args[1] = NULL; + + /* ... */ + + options.stdio_count = 3; + uv_stdio_container_t child_stdio[3]; + child_stdio[0].flags = UV_IGNORE; + child_stdio[1].flags = UV_IGNORE; + child_stdio[2].flags = UV_INHERIT_FD; + child_stdio[2].data.fd = 2; + options.stdio = child_stdio; + + options.exit_cb = on_exit; + options.file = args[0]; + options.args = args; + + int r; + if ((r = uv_spawn(loop, &child_req, &options))) { + fprintf(stderr, "%s\n", uv_strerror(r)); + return 1; + } + + return uv_run(loop, UV_RUN_DEFAULT); +} |