##// END OF EJS Templates
Fixed launch_kernel to support pythonw.exe. The joys of Windows programming...
epatters -
Show More
@@ -5,7 +5,7 b' launchers.'
5 5 # Standard library imports.
6 6 import os
7 7 import socket
8 from subprocess import Popen
8 from subprocess import Popen, PIPE
9 9 import sys
10 10
11 11 # System library imports.
@@ -191,20 +191,26 b' def base_launch_kernel(code, xrep_port=0, pub_port=0, req_port=0, hb_port=0,'
191 191 arguments.extend(extra_arguments)
192 192
193 193 # Spawn a kernel.
194 if independent:
195 if sys.platform == 'win32':
196 proc = Popen(['start', '/b'] + arguments, shell=True)
194 if sys.platform == 'win32':
195 # If using pythonw, stdin, stdout, and stderr are invalid. Popen will
196 # fail unless they are suitably redirected. We don't read from the
197 # pipes, but they must exist.
198 redirect = PIPE if sys.executable.endswith('pythonw.exe') else None
199 if independent:
200 proc = Popen(['start', '/b'] + arguments, shell=True,
201 stdout=redirect, stderr=redirect, stdin=redirect)
197 202 else:
198 proc = Popen(arguments, preexec_fn=lambda: os.setsid())
199 else:
200 if sys.platform == 'win32':
201 203 from _subprocess import DuplicateHandle, GetCurrentProcess, \
202 204 DUPLICATE_SAME_ACCESS
203 205 pid = GetCurrentProcess()
204 206 handle = DuplicateHandle(pid, pid, pid, 0,
205 207 True, # Inheritable by new processes.
206 208 DUPLICATE_SAME_ACCESS)
207 proc = Popen(arguments + ['--parent', str(int(handle))])
209 proc = Popen(arguments + ['--parent', str(int(handle))],
210 stdout=redirect, stderr=redirect, stdin=redirect)
211 else:
212 if independent:
213 proc = Popen(arguments, preexec_fn=lambda: os.setsid())
208 214 else:
209 215 proc = Popen(arguments + ['--parent'])
210 216
General Comments 0
You need to be logged in to leave comments. Login now