Pregunta

Tengo un script de pruebas que necesita para abrir un proceso (un servidor Pyro), hacer algunas cosas que llamará al proceso abierto de información, y cuando se hace todo tendrá que cerrar el proceso de nuevo hacia abajo. Todo esto es parte de una prueba automatizada en un servidor de ensayo.

En Python 2.6 se puede hacer esto:

pyro_server = subprocess.Popen(['python', 'pyro_server.py'])
# Do stuff, making remote calls to the Pyro server on occasion
pyro_server.terminate()

Por desgracia, estoy encerrado en Python 2.4 aquí en el trabajo, así que no tengo acceso a esa función. Y si me acaba de dejar el final de la escritura, por supuesto, el servidor sigue vivo. ¿Qué debo hacer para cerrar / matar a ese proceso antes de que salga del guión?

¿Fue útil?

Solución

  1. subprocess.py considerar que la copia en el directorio de paquetes-dist python2.4. Sólo debe trabajar ya que es un simple envoltorio alrededor de la antigua biblioteca popen.

  2. El objeto Popen terminar función no hace nada más de lo siguiente:

    import os, la señal

    os.kill (pid, signal.SIGKILL)

pid es el ID del proceso del proceso hijo. signal.SIGKILL es el número 9, y es una señal kill estándar de UNIX. Se puede ver cómo generar un subproceso y obtener su PID en Python 2.4 con el módulo de popen aquí :

Otros consejos

@BrainCore:. Tenga en cuenta que os.kill no está disponible en las ventanas en Python24, comprobar los documentos

Mi solución para matar a un objeto subprocess.Popen en las ventanas cuando se utiliza Python24 es la siguiente:

import os, subprocess
p = subprocess.Popen(...)
res = os.system('taskkill /PID %d /F' % p.pid)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top