As the cleanup function is based on process groups and not session ids,
creating a process group rather than a session seems more adequate.
Info: http://www.andy-pearce.com/blog/posts/2013/Aug/process-groups-and-sessions/
global pgtokill
try:
+ preexec_function = None
+ if not isWindows():
+ preexec_function = lambda: os.setpgid(0, 0)
proc = subprocess.Popen(
args,
bufsize=1,
stdout=subprocess.PIPE,
stderr=subprocess.STDOUT,
universal_newlines=True,
- start_new_session=True)
+ preexec_fn=preexec_function)
try:
if not isWindows():
pgtokill = os.getpgid(proc.pid)