2009-12-03 5 views
0

У меня есть сценарий тестирования, который должен открыть процесс (Pyro-сервер), сделать некоторые вещи, которые вызовут открытый процесс для информации, и когда все это будет сделано, необходимо закрыть процесс отступить. Все это часть автоматизированного теста на промежуточном сервере.Убить Windows асинхронный процесс Popen в 2.4

В Python 2.6 вы можете сделать это:

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

Увы, я заперт в Python 2.4 здесь на работе, поэтому я не имею доступ к этой функции. И если я просто позволю сценарию, конечно, серверу жить. Что я должен делать, чтобы закрыть/убить этот процесс до выхода скрипта?

ответ

1
  1. Рассмотрите возможность копирования подпроцесса.py в каталог python2.4 dist-packages. Он должен просто работать, поскольку это простая обертка вокруг старой библиотеки popen.

  2. Объект Popen функция прекращает ничего не делает больше, чем следующие:

    импорт зева, сигнал

    os.kill (ИДП, signal.SIGKILL)

ПИД- ребенок Идентификатор процесса. signal.SIGKILL - это номер 9 и является стандартным сигналом уничтожения unix. Вы можете увидеть, как создать подпроцесс и получить его pid в python 2.4 с помощью модуля popen here:

0

@BrainCore: Обратите внимание, что os.kill недоступен в Windows на python24, проверьте документы.

Мое решение для уничтожения объекта subprocess.Popen на окнах при использовании python24 заключается в следующем:

import os, subprocess 
p = subprocess.Popen(...) 
res = os.system('taskkill /PID %d /F' % p.pid) 
Смежные вопросы