Mercurial > public > mercurial-scm > hg
comparison 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 |
comparison
equal
deleted
inserted
replaced
10236:49a8625b8cac | 10237:2f7a38f336f4 |
---|---|
255 gid = os.getgid() | 255 gid = os.getgid() |
256 try: | 256 try: |
257 return grp.getgrgid(gid)[0] | 257 return grp.getgrgid(gid)[0] |
258 except KeyError: | 258 except KeyError: |
259 return str(gid) | 259 return str(gid) |
260 | |
261 def spawndetached(args): | |
262 return os.spawnvp(os.P_NOWAIT | getattr(os, 'P_DETACH', 0), | |
263 args[0], args) | |
264 |