Не очень хороший способ сделать это. Подпроцесс реализован в Python (в отличие от C), так что вы можете скопировать модуль куда-нибудь и использовать его (надеясь, конечно, что он не использует 2.6 качества).
С другой стороны, вы можете просто реализовать то, что утверждает подпроцесс, и написать функцию, которая отправляет SIGTERM в * nix и вызывает TerminateProcess в Windows. Следующая реализация была протестирована на Linux и в Win XP vm вам понадобятся расширения для Python для Windows :
import sys
def terminate(process):
"""
Kills a process, useful on 2.5 where subprocess.Popens don't have a
terminate method.
Used here because we're stuck on 2.5 and don't have Popen.terminate
goodness.
"""
def terminate_win(process):
import win32process
return win32process.TerminateProcess(process._handle, -1)
def terminate_nix(process):
import os
import signal
return os.kill(process.pid, signal.SIGTERM)
terminate_default = terminate_nix
handlers = {
"win32": terminate_win,
"linux2": terminate_nix
}
return handlers.get(sys.platform, terminate_default)(process)
Таким образом, вам нужно только поддерживать код terminate
, а не весь модуль.