[Earl Eiland wrote] > I'm running a PyWin program that executes another program using > subprocess.Popen(). Unfortunately, this other program isn't well > behaved, and frequently terminates without terminating its process. > After this happens enough times, all my memory is tied up, and the > machine crashes. > > Using subprocess.poll(), I can keep my program from hanging, by timing > out the process, and starting anew. This still leaves the previous > process hogging memory. How do I kill the old process in Windows?
You might be able to use or borrow code from my process.py module. process.py is very similar to Python 2.4's subprocess. It provides a ProcessOpen class (similar to subprocess' Popen). A ProcessOpen instance has wait() and kill() methods that work fine on Windows. Under the hood they are using the Win32 API WaitForSingleObject() and TerminateProcess() functions. http://starship.python.net/~tmick/ Yes, I haven't updated process.py in a while. :) It works fine with Python 2.3 and 2.4 (despite only saying Python 2.2 there). It *does* rely on the PyWin32 extensions being installed with you Python installation -- which you'll already have if you use ActivePython or which you can install separately from here: http://sourceforge.net/project/showfiles.php?group_id=78018 Cheers, Trent -- Trent Mick [EMAIL PROTECTED] -- http://mail.python.org/mailman/listinfo/python-list