diff options
-rw-r--r-- | bitbake/lib/bb/daemonize.py | 9 |
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) |