quagga: close the stdout/stderr as in other daemons

Once babald becomes a background daemon, it should not output information to
stdout, so need to close stdout.

In fact, other daemons close their stdout when they run into background, like
ospfd, isisd and bgpd, by calling daemon() which is in lib/daemon.c

Closing the stdout can fix a tee hang issue { #/usr/sbin/babeld -d |tee tmp }

Signed-off-by: Roy Li <rongqing.li@windriver.com>
Signed-off-by: Martin Jansa <Martin.Jansa@gmail.com>
This commit is contained in:
Roy Li
2014-02-19 15:38:03 +08:00
committed by Martin Jansa
parent bc6e6112e6
commit 7a673eb37e
2 changed files with 51 additions and 0 deletions
@@ -0,0 +1,50 @@
From ba71f768e6dbb1f2ac72ed3bd880bff75a48d345 Mon Sep 17 00:00:00 2001
From: Roy Li <rongqing.li@windriver.com>
Date: Wed, 19 Feb 2014 14:13:40 +0800
Subject: [PATCH] babeld: close stdout once the background daemon is created
Upstream-Status: pending
Once babald becomes a background daemon, it should not output information to
stdout, so need to close stdout.
In fact, other daemons close their stdout when they run into background, like
ospfd, isisd and bgpd, by calling daemon() which is in lib/daemon.c
Closing the stdout can fix a tee hang issue { #/usr/sbin/babeld -d |tee tmp }
Signed-off-by: Roy Li <rongqing.li@windriver.com>
---
babeld/util.c | 10 +++++++++-
1 file changed, 9 insertions(+), 1 deletion(-)
diff --git a/babeld/util.c b/babeld/util.c
index 011f382..76203bc 100644
--- a/babeld/util.c
+++ b/babeld/util.c
@@ -425,7 +425,7 @@ uchar_to_in6addr(struct in6_addr *dest, const unsigned char *src)
int
daemonise()
{
- int rc;
+ int rc, fd;
fflush(stdout);
fflush(stderr);
@@ -441,5 +441,13 @@ daemonise()
if(rc < 0)
return -1;
+ fd = open("/dev/null", O_RDWR, 0);
+ if (fd != -1)
+ {
+ dup2(fd, STDOUT_FILENO);
+ if (fd > 2)
+ close(fd);
+ }
+
return 1;
}
--
1.7.10.4
@@ -5,6 +5,7 @@ PR = "${INC_PR}.0"
SRC_URI += "file://0001-doc-fix-makeinfo-errors-and-one-warning.patch \ SRC_URI += "file://0001-doc-fix-makeinfo-errors-and-one-warning.patch \
file://lingering-IP-address-after-deletion-BZ-486.patch \ file://lingering-IP-address-after-deletion-BZ-486.patch \
file://build-fix-extract.pl-for-cross-compilation.patch \ file://build-fix-extract.pl-for-cross-compilation.patch \
file://babel-close-the-stdout-stderr-as-in-other-daemons.patch \
" "
SRC_URI[quagga-0.99.21.md5sum] = "99840adbe57047c90dfba6b6ed9aec7f" SRC_URI[quagga-0.99.21.md5sum] = "99840adbe57047c90dfba6b6ed9aec7f"