Seite 1 von 1

subprocess.kill() in Python 2.5

Verfasst: Mittwoch 3. März 2010, 10:19
von ...
Hallo,


Ich verwende hier leider noch Python 2.5
Gibt es eine Möglichkeit, hier mittels __future__ oder ähnlichem
subprocess.kill() bzw, subprocess.terminate() verwenden zu können?
Diese wurden ja erst in Python 2.6 implementiert.

Gibt es alternative Möglichkeiten einen subprocess in Python zu killen?


lg,
...

Verfasst: Mittwoch 3. März 2010, 10:32
von ...

Code: Alles auswählen

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)
Das hab ich hier gefunden.

Verfasst: Mittwoch 3. März 2010, 10:33
von lunar
Nein. Unter Unix ist "os.kill(process.pid, signal.SIGTERM)" eine Alternative, wobei "process" ein "subprocess.Popen()"-Objekt ist. Auf ".kill()" bzw. "signal.SIGKILL" würde ich dabei nach Möglichkeit verzichten. Eine Alternative für andere Systeme (e.g. Windows) gibt es in Python 2.5 nicht.