2010-06-02 5 views
3

파이썬에서 동일한 유형의 여러 서브 프로세스를 제어하려고합니다 (저는 Linux하에 있습니다). 내가 원하는 :파이썬에서 프로세스 제어

  • 시작하십시오.
  • 중지하십시오.
  • 아직 실행 중인지 묻습니다.

나는 spawnl을 사용하여 프로세스를 시작할 수 있으며 PID를 가져올 수 있습니다. 이 pid를 사용하면 죽일 때까지 멈출 수 있습니다. 그리고 pid로 실행 중인지 묻는 방법도 있습니다.

다음과 같은 경우 문제가 발생합니다. 프로세스를 시작하고 pid를 기억하십시오. 프로세스는 내가 눈치 채지 않고 끝나고 또 다른 완전히 다른 프로세스가 동일한 PID를 할당 받기 시작합니다. 나는 내 과정을 죽이려하고 완전히 다른 것을 죽인다.

파이썬에서 프로세스를 시작하고 제어하는 ​​더 좋은 방법은 무엇입니까? 감사합니다.

답변

7

subprocess.Popen을 사용하여 다른 프로세스를 시작하고 그 결과로 Popen object을 저장할 수 있습니다. 해당 객체의 메소드를 사용하면 프로세스가 여전히 살아 있는지 확인할 수 있습니다. 프로세스가 종료되었는지 기다리고, 종료하고, 종료 할 수 있습니다. 모두 pid 기반 혼동의 위험이 없습니다! 더하기, 이것은 또한 크로스 플랫폼 접근 방식이지만,이 경우 특별히 신경 쓰지 않아도됩니다.

관련 문제