I am using the subprocess package in Python to run a subprocess, which I later need to kill. However, the documentation of the subprocess package states that the terminate() function is only available from 2.6
We are running Linux with 2.5 and for backwards compatibility reasons I cannot upgrade to 2.6, what is the alternative? I am guessing that these functions are convenience methods for something.
From stackoverflow
-
You call os.kill on the process pid.
os.kill(process.pid, signal.SIGKILL)
You're OK because you're on on Linux. Windows users are out of luck.
Cristian Ciupitu : os.kill(p.pid, signal.SIGTERM) to be more preciseBlauohr : Ups: Garet Simpson was faster! -
To complete @Gareth's answer, on Windows you do:
import ctypes PROCESS_TERMINATE = 1 handle = ctypes.windll.kernel32.OpenProcess(PROCESS_TERMINATE, False, theprocess.pid) ctypes.windll.kernel32.TerminateProcess(handle, -1) ctypes.windll.kernel32.CloseHandle(handle)
not quite as elegant as
os.kill(theprocess.pid, 9)
, but it does work;-)Blauohr : thanks for the win32 code !mtasic : excellent update
0 comments:
Post a Comment