2017-02-27 9 views
0

파이썬에서 subprocess.Popen(cmd)은 특정 cmd이있는 프로세스를 나타내는 subprocess.Popen 인스턴스를 반환 할 수 있습니다. 프로세스가 수신하는 포트 또는 프로세스의 PID에 의해 그러한 인스턴스를 얻을 수 있습니까?파이썬에서 프로세스 인스턴스 (pid 또는 수신 포트 포함)를 얻는 방법은 무엇입니까?

예를 들어 subprocess.getProcessesByPort(port) 또는 subprocess.getProcess(pid)과 같은 API가 있습니까?

본인은 이러한 유연성으로 인해 보안 문제가 발생할 수 있으며 이것이 불가능할 경우 놀라지 않을 것이라고 알고 있습니다. 나는이 모듈을 사용하지 않았으며 더 많은 통찰력을 원합니다.

미리 감사드립니다.

답변

1

psutil package은 플랫폼에 구애받지 않는 방식으로 원하는 것을 제공 할 수 있습니다.

+0

감사합니다. 나는 지금 당장이 모듈을 검사했고 실제로 PID로 프로세스를 검색 할 수 있었다. 그렇다면'subprocess' 모듈에 인스턴스를 캐스팅 할 수 있습니까? – zzy

+0

나는 그렇게하지 않는다. Popen의 생성자가 ** 새로운 ** 프로세스를 호출하기 때문에 : POSIX에서 클래스는 os.execvp()와 같은 동작을 사용하여 하위 프로그램을 실행합니다. Windows에서이 클래스는 Windows CreateProcess() 함수를 사용합니다. [documentation] (https://docs.python.org/3/library/subprocess.html#subprocess.Popen)을 참조하십시오. psutil은 프로세스 추상화를위한 자체 클래스를 가지고 있습니다 :'psutil.Process'는'subprocess.Popen'에서 필요한 기능을 제공 할 수 있습니다. –

+0

많은 의미가 있습니다. 정말 고맙습니다! – zzy