12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849 |
- #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);
- }
|