aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Tokarev <mjt@tls.msk.ru>2014-10-30 17:30:51 +0300
committerMichael Tokarev <mjt@tls.msk.ru>2014-11-02 10:04:34 +0300
commit0be5e436ff2cd6b8a1ff6782e3cfd09441ff3ec7 (patch)
tree552d953bbe4a70548027d8b20f3c098fe60c6744
parent08a655be71d0a130a5d9bf7816d096ec31c4f055 (diff)
os-posix: use global daemon_pipe instead of cryptic fds[1]
When asked to -daemonize, we fork a child and setup a pipe between it and parent to pass exit status. os-posix.c used global fds[2] array for that, but actually only the writing side of the pipe is needed to be global, and this name is really too generic. Use just one interger for the writing side of the pipe, and name it daemon_pipe to be more understandable than cryptic fds[1]. Signed-off-by: Michael Tokarev <mjt@tls.msk.ru> Reviewed-by: Gonglei <arei.gonglei@huawei.com>
-rw-r--r--os-posix.c10
1 files changed, 6 insertions, 4 deletions
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