diff mercurial/cmdutil.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 48653dea23dd
children e22695b4472f
line wrap: on
line diff
--- a/mercurial/cmdutil.py	Tue Jan 12 15:12:53 2010 +0100
+++ b/mercurial/cmdutil.py	Fri Apr 10 21:20:25 2009 +0200
@@ -580,8 +580,7 @@
             elif runargs[i].startswith('--cwd'):
                 del runargs[i:i+2]
                 break
-        pid = os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0),
-                         runargs[0], runargs)
+        pid = util.spawndetached(runargs)
         os.close(wfd)
         os.read(rfd, 1)
         if parentfn: