summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--bitbake/lib/bb/daemonize.py9
1 files changed, 7 insertions, 2 deletions
diff --git a/bitbake/lib/bb/daemonize.py b/bitbake/lib/bb/daemonize.py
index 8300d1d0f0..bf16793468 100644
--- a/bitbake/lib/bb/daemonize.py
+++ b/bitbake/lib/bb/daemonize.py
@@ -49,8 +49,8 @@ def createDaemon(function, logfile):
49 # exit() or _exit()? 49 # exit() or _exit()?
50 # _exit is like exit(), but it doesn't call any functions registered 50 # _exit is like exit(), but it doesn't call any functions registered
51 # with atexit (and on_exit) or any registered signal handlers. It also 51 # with atexit (and on_exit) or any registered signal handlers. It also
52 # closes any open file descriptors. Using exit() may cause all stdio 52 # closes any open file descriptors, but doesn't flush any buffered output.
53 # streams to be flushed twice and any temporary files may be unexpectedly 53 # Using exit() may cause all any temporary files to be unexpectedly
54 # removed. It's therefore recommended that child branches of a fork() 54 # removed. It's therefore recommended that child branches of a fork()
55 # and the parent branch(es) of a daemon use _exit(). 55 # and the parent branch(es) of a daemon use _exit().
56 os._exit(0) 56 os._exit(0)
@@ -79,4 +79,9 @@ def createDaemon(function, logfile):
79 traceback.print_exc() 79 traceback.print_exc()
80 finally: 80 finally:
81 bb.event.print_ui_queue() 81 bb.event.print_ui_queue()
82 # os._exit() doesn't flush open files like os.exit() does. Manually flush
83 # stdout and stderr so that any logging output will be seen, particularly
84 # exception tracebacks.
85 sys.stdout.flush()
86 sys.stderr.flush()
82 os._exit(0) 87 os._exit(0)