알 수없는 명령을 실행하고 stdout을 파일로 캡처하려고합니다. 그러나 각 인스턴스에서 p.wait()
을 시도 할 때 어려움이 있습니다.여러 subproccess.Popen 명령을 동시에 대기() 한 다음 종료하십시오.
print "Started..."
for i, cmd in enumerate(commands):
i = "output_%d.log" % i
p = Popen(cmd, shell=True, universal_newlines=True, stdout=open(i, 'w'))
p.wait()
print "Done!"
나는 현재 스크립트 각각의 모든 단일 프로세스가 완료 된 경우에만을 동시에 commands
모든 것을 실행하고 종료 할 수있는 방법을 찾고 있어요 : 내 코드는 다음과 같이 보입니다. 또한 각 명령이 종료 코드를 반환 할 때이를 알리는 데 도움이됩니다.
내가 JF 세바스찬에 의해 this one 포함, 몇 가지 대답에 고개 args=(p.returncode, q)
-args=(p.stdout, q)
을 변경하여 내 상황에 적응하려고 노력하지만 같이 즉시 종료하고 (아마도 인해 shell=True
에?) 백그라운드에서 실행 결국했습니다 물론 bash shell 내부에 눌려진 어떤 키에도 응답하지 않기 때문에 ... 나는 어디로 가야할지 모른다.
Jeremy Brown's answer도 도움이되었지만, select.epoll()
이 (가) AttributeError 예외를 던지고있었습니다.
작동시키기위한 다른 방법이나 트릭이 있습니까? 그것은 크로스 플랫폼 일 필요는 없으며, GNU/Linux와 macOS를위한 솔루션은 대단히 감사 할 것입니다. 미리 감사드립니다!