diff --git a/os-posix.c b/os-posix.c index e31a099a2b..d687896f91 100644 --- a/os-posix.c +++ b/os-posix.c @@ -47,7 +47,7 @@ static struct passwd *user_pwd; static const char *chroot_dir; static int daemonize; -static int fds[2]; +static int daemon_pipe; void os_setup_early_signal_handling(void) { @@ -205,6 +205,7 @@ void os_daemonize(void) { if (daemonize) { pid_t pid; + int fds[2]; if (pipe(fds) == -1) { exit(1); @@ -236,7 +237,8 @@ void os_daemonize(void) } close(fds[0]); - qemu_set_cloexec(fds[1]); + daemon_pipe = fds[1]; + qemu_set_cloexec(daemon_pipe); setsid(); @@ -263,7 +265,7 @@ void os_setup_post(void) ssize_t len; again1: - len = write(fds[1], &status, 1); + len = write(daemon_pipe, &status, 1); if (len == -1 && (errno == EINTR)) { goto again1; } @@ -296,7 +298,7 @@ void os_pidfile_error(void) { if (daemonize) { uint8_t status = 1; - if (write(fds[1], &status, 1) != 1) { + if (write(daemon_pipe, &status, 1) != 1) { perror("daemonize. Writing to pipe\n"); } } else