2017-02-27 44 views
0

在Python中,subprocess.Popen(cmd)可以返回一個subprocess.Popen實例,該實例表示具有某個cmd的進程。我想知道,是否有可能通過進程偵聽的端口或進程的PID來獲取這樣的實例?如何在Python中獲取流程實例(使用pid或偵聽端口)?

例如,是否有API如subprocess.getProcessesByPort(port)subprocess.getProcess(pid)

我明白這樣的靈活性可能會導致安全問題,如果不可能,不會感到驚訝。我之前沒有使用這個模塊,並且希望爲它尋找更多的見解。

在此先感謝!

回答

1

psutil package可能會以跨平臺的方式提供您想要的內容。

+0

謝謝!我剛纔檢查了這個模塊,確實能夠通過它的pid檢索一個進程。那麼是否有可能將實例轉換爲'subprocess'模塊中的實例? – zzy

+0

我不這樣。因爲Popen的構造函數調用**一個新的進程:在POSIX上,類使用類似os.execvp()的行爲來執行子程序。在Windows上,該類使用Windows的CreateProcess()函數。請參閱[文檔](https://docs.python.org/3/library/subprocess.html#subprocess.Popen)。另一方面,psutil擁有它自己的進程抽象類:'psutil.Process',它可以提供你需要的'subprocess.Popen'功能。 –

+0

明白這一點很有意義。非常感謝! – zzy