diff mercurial/posix.py @ 10237:2f7a38f336f4

serve: add and use portable spawnvp replacement There is no standard python command to really detach a process under Windows. Instead we use the low level API wrapped by subprocess module with all necessary options to avoid any kind of context inheritance. Unfortunately, this version still opens a new window for the child process. The following have been tried: - os.spawnv(os.P_NOWAIT): works but the child process is killed when parent console terminates. - os.spawnv(os.P_DETACH): works on python25, hang on python26 when writing to the hgweb output socket. - subprocess.CreateProcess() hack without shell mode: similar to os.spawnv(os.P_DETACH). Fix 1/3 for issue421
author Patrick Mezard <pmezard@gmail.com>
date Fri, 10 Apr 2009 21:20:25 +0200
parents 750b7a4f01f6
children 8e4be44a676f
line wrap: on
line diff
--- a/mercurial/posix.py	Tue Jan 12 15:12:53 2010 +0100
+++ b/mercurial/posix.py	Fri Apr 10 21:20:25 2009 +0200
@@ -257,3 +257,8 @@
         return grp.getgrgid(gid)[0]
     except KeyError:
         return str(gid)
+
+def spawndetached(args):
+    return os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0),
+                      args[0], args)
+