|
@@ -1063,12 +1063,23 @@ def GuiModuleMain(mainfn):
|
|
|
# launch GUI in the background
|
|
|
child_pid = os.fork()
|
|
|
if child_pid == 0:
|
|
|
+ # To become the session leader of this new session and the process group
|
|
|
+ # leader of the new process group, we call os.setsid(). The process is
|
|
|
+ # also guaranteed not to have a controlling terminal.
|
|
|
+ os.setsid()
|
|
|
mainfn()
|
|
|
- os._exit(0)
|
|
|
+ else:
|
|
|
+ # exit() or _exit()?
|
|
|
+ # _exit is like exit(), but it doesn't call any functions registered
|
|
|
+ # with atexit (and on_exit) or any registered signal handlers. It also
|
|
|
+ # closes any open file descriptors. Using exit() may cause all stdio
|
|
|
+ # streams to be flushed twice and any temporary files may be unexpectedly
|
|
|
+ # removed. It's therefore recommended that child branches of a fork()
|
|
|
+ # and the parent branch(es) of a daemon use _exit().
|
|
|
+ os._exit(0) # Exit parent of the child.
|
|
|
else:
|
|
|
mainfn()
|
|
|
|
|
|
-
|
|
|
def PilImageToWxImage(pilImage, copyAlpha = True):
|
|
|
"""!Convert PIL image to wx.Image
|
|
|
|