You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
49 lines
1.1 KiB
49 lines
1.1 KiB
#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); |
|
}
|
|
|