Mercurial > hg
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: