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) |
