This is not a big issue. I don't think there is anything like a
process tree in Windows 98. And if anything hangs it can still be
killed by Process Viewer. The timeout works, so that is all that
really matters. Just out of curiosity though, why use a shell as an
intermediary. Why isn't the Python interpreter executed directly in
the subprocess?
>>> cmd = 'python -c "print \\"Hello.\\""'
>>> print cmd
python -c "print \"Hello.\""
>>> import subprocess
>>> out = open('C:/windows/desktop/stdout.txt', 'w')
>>> s = subprocess.Popen(cmd, stdout=out)
>>> s.wait()
0
>>> out.close()
>>> print open('C:/windows/desktop/stdout.txt').read()
Hello.
Lenard
Nicholas Dudfield wrote:
Lenard,
Weird, XP? Vista? I'm on XP SP3
By passing an env = {} to the Popen constructor temporarily to remove
PATH from the environment it fails my end.
D:\Nick\PyGame\trunk>run_tests.py -s
No way of killing unruly processes. Try installing sysinternals
pskill and placi
ng on %PATH%.
I found a recipe for TerminateProcess, but it didn't kill child
processes so it would stop the run_tests from hanging but on mine at
least, python would call cmd which would in turn call python. It
would only kill cmd.exe, leaving python to run rampant.
cmd
python run_tests.py
cmd python
xxxx_test.py
But yeah, we really need it to be consistent however it works. It
would be nice if it would kill process trees also.
You are more than welcome to make any changes.
To run a test_suite with a test that "while True: pass"
$ run_tests.py -s -f infinite_loop
I have been meaning to add that to the run_tests test.
Cheers
Lenard Lindstrom wrote:
Hi,
I tried running the tests in subprocess mode an everything passed.
Great, except I didn't have either pskill or taskkill installed.
When checking for the programs Popen.wait() always returned 0, even
when the program was not found. So it incorrectly assumed I had
pskill installed (first in the list). Anyway, since pywin32 is
already required, why not do the TerminateProcess system call
directly, making pskill or taskkill unnecessary. If interested I can
making the necessary changes to async_sub.py.
Lenard