문제

프로세스 (파이로 서버)를 열고 정보를 위해 열린 프로세스를 호출하는 몇 가지 작업을 수행 해야하는 테스트 스크립트가 있으며, 모든 작업이 완료되면 프로세스를 닫아야합니다. 스테이징 서버에서 자동화 된 테스트의 일부입니다.

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. subprocess.py를 Python2.4 Dist-Packages 디렉토리에 복사하는 것을 고려하십시오. 오래된 Popen 라이브러리 주변의 간단한 포장지이므로 작동해야합니다.

  2. Popen Object Terminate 함수는 다음과 같습니다.

    OS, 신호 가져 오기

    os.kill (PID, Signal.Sigkill)

PID는 자식 프로세스의 프로세스 ID입니다. Signal.sigkill은 숫자 9이며 표준 UNIX 킬 신호입니다. Popen 모듈을 사용하여 Subprocess를 스폰하고 Python 2.4에서 PID를 얻는 방법을 볼 수 있습니다. 여기:

다른 팁

@BrainCore : OS.Kill은 Python24의 Windows에서 사용할 수 없습니다. 문서를 확인하십시오.

Python24를 사용할 때 Windows의 Popen Object.popen 객체를 제거하는 내 솔루션은 다음과 같습니다.

import os, subprocess
p = subprocess.Popen(...)
res = os.system('taskkill /PID %d /F' % p.pid)
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top