summaryrefslogtreecommitdiffstats
path: root/bitbake/lib/bb/daemonize.py
diff options
context:
space:
mode:
Diffstat (limited to 'bitbake/lib/bb/daemonize.py')
-rw-r--r--bitbake/lib/bb/daemonize.py20
1 files changed, 12 insertions, 8 deletions
diff --git a/bitbake/lib/bb/daemonize.py b/bitbake/lib/bb/daemonize.py
index ab4a954622..8380828a17 100644
--- a/bitbake/lib/bb/daemonize.py
+++ b/bitbake/lib/bb/daemonize.py
@@ -29,6 +29,7 @@ __version__ = "0.2"
29# Standard Python modules. 29# Standard Python modules.
30import os # Miscellaneous OS interfaces. 30import os # Miscellaneous OS interfaces.
31import sys # System-specific parameters and functions. 31import sys # System-specific parameters and functions.
32import io
32 33
33# Default daemon parameters. 34# Default daemon parameters.
34# File mode creation mask of the daemon. 35# File mode creation mask of the daemon.
@@ -124,6 +125,7 @@ def createDaemon(function, logfile):
124 # streams to be flushed twice and any temporary files may be unexpectedly 125 # streams to be flushed twice and any temporary files may be unexpectedly
125 # removed. It's therefore recommended that child branches of a fork() 126 # removed. It's therefore recommended that child branches of a fork()
126 # and the parent branch(es) of a daemon use _exit(). 127 # and the parent branch(es) of a daemon use _exit().
128 os.waitpid(pid, 0)
127 return 129 return
128 130
129 # Close all open file descriptors. This prevents the child from keeping 131 # Close all open file descriptors. This prevents the child from keeping
@@ -177,16 +179,18 @@ def createDaemon(function, logfile):
177# os.dup2(0, 1) # standard output (1) 179# os.dup2(0, 1) # standard output (1)
178# os.dup2(0, 2) # standard error (2) 180# os.dup2(0, 2) # standard error (2)
179 181
180
181 si = open('/dev/null', 'r')
182 so = open(logfile, 'w')
183 se = so
184
185
186 # Replace those fds with our own 182 # Replace those fds with our own
183 si = open('/dev/null', 'r')
187 os.dup2(si.fileno(), sys.stdin.fileno()) 184 os.dup2(si.fileno(), sys.stdin.fileno())
188 os.dup2(so.fileno(), sys.stdout.fileno()) 185
189 os.dup2(se.fileno(), sys.stderr.fileno()) 186 try:
187 so = open(logfile, 'a+')
188 se = so
189 os.dup2(so.fileno(), sys.stdout.fileno())
190 os.dup2(se.fileno(), sys.stderr.fileno())
191 except io.UnsupportedOperation:
192 sys.stdout = open(logfile, 'a+')
193 sys.stderr = sys.stdout
190 194
191 function() 195 function()
192 196