I guess it depends on what that child process does. Services run on a different desktop, so any UI (eg, message box or similar) or attempts to read from stdin etc will make it appear to have hung. Using a windows debugger (or even "process explorer" from the MS SysInternals team) might give you the name of the function the "hanging" thread is in which may give you some clues...

Mark

On 21/02/2012 2:26 AM, Jens Vagelpohl wrote:
Hi all,

I've written a Windows service based on win32serviceutil.ServiceFramework. The 
service per se is running just fine. I am testing it on Windows Server 2003.

When starting, the service uses the win32process.CreateProcess to start a 
process:

win32process.CreateProcess(None,<CMDLINE>, None, None, 0, 0, None,<WORKINGDIR>, 
win32process.STARTUPINFO())

This process is a new Python interpreter which allows me better control over 
setting up the the environment (e.g. PYTHONPATH) in order to invoke code 
outside of the system's PYTHONPATH. The service is using 
win32event.WaitForMultipleObjects to keep track of this process. That part 
works fine as well.

Where I am failing is an attempt to spawn a subprocess from my service's new Python process. I have 
tried all kinds of parameter combinations for subprocess.call and subprocess.check_output, and 
tried win32process.CreateProcess as well. It all works fine when running my service from the 
command line using the "debug" flag. But when the service is started with the 
"start" flag (or from the Service Manager), the command line process I am spawning last 
always hangs. Funny detail: The same code works fine under Windows 7.

Can anyone show me how to debug the hanging subprocess?

Thanks!

jens




_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

_______________________________________________
python-win32 mailing list
python-win32@python.org
http://mail.python.org/mailman/listinfo/python-win32

Reply via email to