Mercurial > public > mercurial-scm > hg
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) +