On Mon, Oct 19, 2020 at 9:23 PM Renato Maia <[email protected]> wrote:
> The attached code illustrates the behavior. The output is:
Sorry, I forgot to attach the file. Here it is.
--
Renato Maia
--
You received this message because you are subscribed to the Google Groups
"libuv" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/libuv/CAB-PuDrb953b9XFYVdrOQ2XQUBOBdPBHJMUCsi5GL0KT3j7K5w%40mail.gmail.com.
#include <assert.h>
#include <string.h>
#include <stdlib.h>
#include <stdio.h>
#include <uv.h>
#define NFD 3
#define CMD "echo \"Hello, world!\""
static uv_loop_t uvloop;
int main(int argc, char const *argv[])
{
int err, i;
uv_tty_t tty[NFD];
printf("libuv %s\n", uv_version_string());
err = uv_loop_init(&uvloop);
assert(err >= 0);
for (i = 0; i < NFD; ++i) {
err = uv_tty_init(&uvloop, tty+i, i, 0);
assert(err >= 0);
printf("%s:%d: uv_tty_init(loop, tty, %d, 0)\n", __FILE__, __LINE__, i);
}
err = system(CMD);
if (err != 0 && errno != 0)
printf("%s:%d: system('"CMD"') = %s\n", __FILE__, __LINE__, strerror(errno));
else if (WIFEXITED(err))
printf("%s:%d: system('"CMD"') = exit(%d)\n", __FILE__, __LINE__, WEXITSTATUS(err));
else if (WIFSIGNALED(err))
printf("%s:%d: system('"CMD"') = signal(%d)\n", __FILE__, __LINE__, WTERMSIG(err));
for (i = 0; i < NFD; ++i) {
uv_close((uv_handle_t *)(tty+i), NULL);
printf("%s:%d: uv_close(tty) /* fd=%d */\n", __FILE__, __LINE__, i);
}
err = uv_run(&uvloop, UV_RUN_DEFAULT);
assert(err >= 0);
err = uv_loop_close(&uvloop);
assert(err >= 0);
return 0;
}