diff options
Diffstat (limited to 'chardev/char-stdio.c')
-rw-r--r-- | chardev/char-stdio.c | 10 |
1 files changed, 6 insertions, 4 deletions
diff --git a/chardev/char-stdio.c b/chardev/char-stdio.c index 48db8d2..2568164 100644 --- a/chardev/char-stdio.c +++ b/chardev/char-stdio.c @@ -107,18 +107,20 @@ static void qemu_chr_open_stdio(Chardev *chr, old_fd0_flags = fcntl(0, F_GETFL); old_fd1_flags = fcntl(1, F_GETFL); tcgetattr(0, &oldtty); - if (!g_unix_set_fd_nonblocking(0, true, NULL)) { - error_setg_errno(errp, errno, "Failed to set FD nonblocking"); + if (!qemu_set_blocking(0, false, errp)) { return; } + + if (!qemu_chr_open_fd(chr, 0, 1, errp)) { + return; + } + atexit(term_exit); memset(&act, 0, sizeof(act)); act.sa_handler = term_stdio_handler; sigaction(SIGCONT, &act, NULL); - qemu_chr_open_fd(chr, 0, 1); - stdio_allow_signal = !opts->has_signal || opts->signal; qemu_chr_set_echo_stdio(chr, false); } |